1.正则表达式
1)三元表达式
xxx if num>0 else xxxx
2) 列表推导式
[i for i in range(1,10)]
3) 字典推导式
{ k,v for k,v in enumerate("abc')}
2.函数对象的作用
函数名存放了函数的内存地址,变量,即函数名就是函数对象
1) 函数对象可以直接被引用
2)函数对象可以做为参数传递
3)函数对象可以获取返回值
4)函数对象可以做为容器类型
3.名称空间的作用
名称空间:存放名字与内存空间地址相互对应关系的容器,是用来解决由于名字有限,导致名字重复冲突的问题
三种名称空间:
Built-in:内置名称空间:系统级,一个随解释器执行而产生,解释器停止而销毁的名称空间
Global:全局名称空间:文件级,多个:随所属文件加载而产生,文件运行完毕而销毁
Local:局部名称空间:函数级,多个随所属函数执行而产生,函数执行完毕而销毁
del关键字 名字可以移除查找最近的名字与内存空间地址的对应关系
加载顺序:Built-in > Global >Local
4.函数的嵌套定义
一个函数要使用另一个函数中的变量
5.函数的作用域
作用域:名字起作用的范围
作用域分为四种:
Built-in:内置作用域,作用文件的所有地方
Global:全局作用域:作用当前文件的所有地方
Enclosing:嵌套作用域:作用当前函数已内部被嵌套函数
Local:局部作用域:作用当前函数内部
作用域的查找顺序:Local>Enclosing>Global>Built-in
6.函数的闭包
closure:被包裹的函数,称之为闭包
完整的闭包结构:1.将函数进行闭包处理;2.提升函数名的作用域
案例:延迟加载
def get_site(url): #url='https://www.baidu.com'
def site():
response=requests.get(url)
if response.status_code == 200:
print(response.text)
return site