内层函数对外层变量(非全局变量)的引用

闭包

什么是闭包?

闭包就是内层函数对外层函数的变量的引用

我们使用__closure__来检测函数是否闭包,使用函数名__closure__返回东西就是闭包,返回None就不是闭包

那么如何在函数外边调用内部函数呢?

使用闭包的好处:

 使变量常驻内存(保证变量不会消亡)

迭代器

什么是迭代器?

遵循可迭代协议的对象

 

我们偶尔会碰到这样的报错信息,注意看---->'int' object is not iterable.翻译过来就是整数类型对象是不可迭代的,iterable表示可迭代的,表示可迭代协议,那么如何进行验证数据类型是否符合可迭代协议,我们可以通过dir函数来产看类中定义好的所有方法.

我们试着打印这句话:

在打印结果中,我们试着寻找__iter__,如果能找到,那么这个类的对象就是可迭代对象

接着我们继续实验以下类型的数据.

我们发现这些数据类型里面全部都有__iter__,那么这就意味着它们全部遵循可迭代协议

那么我们可以确定的是,只要里面包含__iter__的就是可迭代的

原文地址:https://www.cnblogs.com/ALADL/p/9325402.html