闭包:在内层函数中访问外层函数的变量
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、节省内存