闭包、迭代器
一、函数名的应用以及第一类对象
函数名可以向变量一样使用
函数名可以进行赋值
函数名可以充当容器中的元素类型
函数名可以充当参数‘
函数名可以作为函数名的返回值
二、
闭包
def func(): name = "alex" # 常驻内存 防止其他程序改变这个变量 def inner(): print(name) # 在内层函数中调用了外层函数的变量,叫闭包, 可以让一个局部变量常驻内存 return inner ret = func() ret() # 执行的是inner()
内部函数访问外部函数的局部变量
特点;
安全
常驻内存,提高效率
三、迭代器
可迭代对象:内部含有_ _ iter_ _
迭代器:内部含有_ _iter_ _,_ _next_ _
str , list, dict, tuple, set 都是可迭代对象,但不是迭代器
文件的句柄 ,range(),是迭代器。
迭代器的特点:
节省内存
惰性机制
只能向前,不能回退。
四、
lst = ['秦始皇', '汉武帝', '齐桓公', '晋文公']
it = lst._ _iter_ _()
while 1:
try:
name = _ _next_ _()
except StopIteration:
break