一 .函数名的运用
①函数名是⼀个变量, 但它是⼀个特殊的变量, 与括号配合可以执⾏函数的变量
②函数名是一个内存地址
③ 函数名可以赋值给其他变量
④函数名可以当做容器类的元素
⑤函数名可以当做函数的参数
⑥函数名可以作为函数的返回值
二.闭包
闭包就是内层函数, 对外层函数(非全局)的变量的引⽤.
标准的闭包
①优点:1).可以保护变量不受侵害
2),保持一个变量常驻内存
② .__closure__ 查看是否是闭包
返回 None 就不是闭包
返回一个地址 是闭包
③ 在外部调用内部
1).单层
2).多层
三.迭代器
1.一个数据类型中包含了__iter__函数表示这个数据是可迭代的
dir(数据): 返回这个数据可以执行的所有操作
2.判断迭代器和可迭代对象的方案(野路子)
__iter__ Iterable 可迭代的(str, list, tuple, dict, set)
__iter__ __next__ Iterator 迭代器
3.判断迭代器和可迭代对象的方案(官方)
借助两个模块 from collections import Iterable, Iterator
isinstance(对象, Iterable) 是否是可迭代的
isinstance(对象, Iterator) 是否是迭代器
4.模拟for 循环
5.特征:
1. 省内存(生成器)
2. 惰性机制
3. 只能向前. 不能后退
作用:统一了各种数据类型的遍历