函数名本质上就是函数的内存地址。闭包
1,。能够被引用函数
2. 能够被当作容器类的元素spa
3.能够当作函数的参数和返回值对象
第一类对象(first-class object)指 1.可在运行期建立 2.可用做函数参数或返回值 3.可存入变量的实体
闭包函数:
#输出的__closure__有cell元素 :是闭包函数 def func(): name = 'eva' def inner(): print(name) print(inner.__closure__) return inner f = func() f() #输出的__closure__为None :不是闭包函数 name = 'egon' def func2(): def inner(): print(name) print(inner.__closure__) return inner f2 = func2() f2()
迭代器:
假如咱们本身写了一个数据类型,但愿这个数据类型里的东西也能够使用for被一个一个的取出来,那咱们就必须知足for的要求。这个要求就叫作“协议”。内存
能够被迭代要知足的要求就叫作可迭代协议。可迭代协议的定义很是简单,就是内部实现了__iter__方法。it
可迭代的:内部必须含有一个__iter__方法。io
迭代器遵循迭代器协议:必须拥有__iter__方法和__next__方法。for循环
for循环,能遍历一个可迭代对象,他的内部到底进行了什么?class
l = [1,2,3,4] l_iter = l.__iter__() while True: try: item = l_iter.__next__() print(item) except StopIteration: breakltem=iter(l)