1.装饰器就相当于绑定了一些方法,增加了一些扩展功能。在定义函数之前,加@XXX
代码默认开放封闭原则。
2.生成器保存的是算法。
生成器的创建:把列表生成式的[]改成(),就是生成器。或者一个函数里面包含yield关键字,就是生成器。执行时候遇到yield中断,下次继续执行。 调用 a.__next__()
send()和next()的区别就在于send可传递参数给yield表达式,这时候传递的参数就会作为yield表达式的值,而yield的参数是返回给调用者的值,也就是说send可以强行修改上一个yield表达式值。
3.迭代器:可以被next()函数调用并不断返回下一个值的对象称为迭代器。相当于访问集合元素的一种方式。 迭代器是一个对象,不是一个函数。
生成器一定是迭代器,是一种特殊的迭代器。迭代器是一次性消耗品,当循环以后就空了。
4.在一个函数a里面又定义了一个函数b,这个函数b的参数用到了外面函数的变量。那么统称为闭包。
网友评论