1.闭包
函数名第一类对象
1函数名其实就是变量名
2可以像变量一样互相赋值.
3 可以作为函数的参数,进行传递
4 可以作为返回值返回
5可以作为集合的元素进行存储
内部函数对外部函数中的变量的调用 def outrt(): a=10 def innerr(): a return 好处: 保护变量 常住内存 2.迭代器 1. Iterable: 可迭代的.里面有 __iter__() 2. Iterator: 迭代器. 里面有__iter__() 还有 __next__() 特点: 1,节省内存 2,惰性机制(只有执行__next__()才会取值) 3,只能向前取值,不能反复 dir() #查看数据可执行操作的方法 isinstance() #判断xxx对象是否是xxx类型 __name__() #查看函数的名字 __doc__() #查看函数的文档注释 lst=[1,2,3] it=lst.__iter__() while 1: try: it.__next__() except StopIteration: break 3.生成器 生成器的本质就是迭代器 生成器由生成器函数来创建或者通过生成器表达式来创建 4.生成器函数 生成器函数:在函数中return换成yield.这个函数是生成器函数 def func(): yield gen=func() #函数并不会执行,而是创建一个生成器对象 取值: gen.__next__() #下一个 gen.send() #可以给上一个yield传值,第一次执行不能用send() 特性: 1.节省内存 2.惰性机制 3.只能向前 5.各种推导式 1.列表推导式: [结果 for循环 if条件] 2.字典推导式: { key: value for循环 if条件} 3.集合推导式: {key for循环 if条件} 6. 生成器表达式(笔试题) (结果 for循环 if条件) # 计算两个数的和 def add(a, b): return a + b def test(): # 生成器函数 for t in range(4): yield t g = test() for n in [2, 10]: g = (add((n, i) for i in g)) print(list(g))惰性机制
记录在内存中的一段代码.