函数名的使用:
1,函数名可以当做值赋值给变量
2,函数名可以当参数去传递,传递函数名的时候,如说+()就是传递这个函数的返回值
3,函数名可以当做返回值被返回,返回值不能加括号,接力要一层一层传递,中间断了就传不到
def foo(): print(2) def func(msg): print(1) return msg() print(func(fool))
4,函数名可以当做一个元素存放在容器中
5,查看函数内存地址print(函数名)
def func(): pass def func2(msg): print(msg) func(func())
for i in lst: 遍历
i() 调用
闭包
使用函数__closure__获取的内容不是None就是闭包,嵌套函数并且内部函数使用外部变量(非全局变量)就是闭包
好处:保护这个变量不被外界修改
生命周期延长
节省开辟空间和销毁空间的时间差
应用场景: import requests
迭代器
遵守迭代协议:
可以被for循环的就是可迭代对象__iter__可迭代
只有__iter__方法的就是可迭代对象
新建一个迭代器,具有__iter__和__next__方法
迭代器不能回退,是惰性的,一次性
lst=[1,2,3,4,5] l=lst.__next__() 创建一个迭代器 print(l.__next__()) 执行 1 ...2 ...3 ...4
...5
for 循环机制
lst=[1,2,3,4,5] l=lst.__iter__() while True: try: 异常捕获 print(l.__next__()) except stopIteration break
查看是否是可迭代对象
from collections import Iterable,Iterator lst=[1,2,3,4] li=lst.__iter__() print(isinstance([1,2,3,4],Tterator))