生成器 generator 实现生成器 t = (x*x for x in range(10)) print(t) 使用next()方法,可以获取生成式中的下一个元素 如果生成器中的元素已经取完,则抛出StopIteration异常 利用函数实现生成器 # 利用函数生成自然数序列 def nature(): n = 1 while True: ''' return n 1.返回n的值;2.立即结束函数的执行 yield n 1. 返回n的值,2. 立即暂停函数的执行 ''' # print(n) yield n # return n += 1 先计算赋值符号的右边,然后再赋值 a, b = b, a+b 高阶函数 函数名本质上就是一个指向该函数的变量 函数作为参数传入 一个函数A可以接受另一个函数B作为参数,把这个函数A就称为高阶函数 函数作为返回值 lazy_s()函数中定义了内部函数s(),而s()函数中又引用了外部函数lazy_s()的参数 args 当lazy_s()函数返回函数s(),相关的参数和变量都已经保存在返回的函数中 我们把这种程序结构称为 闭包Closure 匿名函数 lambda 表达式 匿名函数一般只 用于处理简单的情况 装饰器Decorator 在代码运行期间动态增加功能的方式,就称为装饰器 可以传参的装饰器
|