闭包:在内层函数中访问外层函数的变量
1、闭包可以让调用这个变量的代码一致性 def outer(): a = 10 # 内部变量 def inner(): nolocal a = 20 #只可以在内部修改 保证业务的逻辑性 print(a) return inner 2、闭包也可以让变量常驻内存 代码如上,如果没有发生调用outer,变量a就会常驻内存 # 判断是否为闭包 def outer(): a = 10 def inner(): print(a) print('aaa') print(inner.__closure__) outer() #结果为None 则不是闭包 #有结果显示内存地址,则为闭包
迭代器:
1、具有__iter__()方法的为可迭代对象iterable
str list tuple dict 都是可迭代对象
2、生成迭代器,迭代器里面有__next__()方法,
s = 'abcdefg'
it = s.__iter__() #获取迭代器 it为迭代器的对象
特点:
1、只能前进
2、节省内存