1.函数名是变量名
“=”是内存指向,等号赋值操作,内存指向操作
变量——可赋值,可作为列表元素
函数名可以作为返回值返回
函数名可作为参数传递
2.闭包
内层函数使用了外层函数的变量
作用:可以让一个变量常驻内存,不被销毁,可以保护变量不被外界修改
也就是outer()函数里,a=10这个变量永存,不会被外界污染,所以称之为闭包
3.装饰器
是一种固定语法,不改变函数内部语法逻辑的基础上,给函数加的功能。
软件设计原则:开闭原则:对功能添加开放,对修改原来函数代码封闭。
装饰器模板,相当于函数的函数:
调用装饰器1
调用装饰器2
同一函数被多个装饰器一层一层包
4.迭代器
作用,效果:让一个可迭代对象从里面拿到每个数据。
在python中,只有可迭代对象能拿到迭代器,int类型不可迭代。
可以被迭代:在这种类型数据有 __iter__
迭代器:通过__iter__函数得到一个对象
迭代器是可迭代对象,可迭代对象不一定是迭代器。
直观效果:有__iter__ 是可迭代对象
有__iter__,__next__是迭代器
特点:
1.省内存
2.惰性机制
3.只能向前,迭代完对象之后会报错 StopIteration
5.生成器
本质是迭代器。 (1).生成器函数 yield 和return效果一样,每次next执行到下个yield
节省内存,把超大数据集,分段处理
(2)生成器表达式
拿空生成器:1.for 循环 2.生成列表
在函数写yield,此函数为生成器函数,生成器函数执行创建一个生成器。生成器.__next__(),才执行一次到yield。
6.推导式
列表推导式 [结果 for循环 if语句]
字典推导式 {key:value for循环 if语句}
集合推导式 {key for循环 if语句}
生成器表达式 (结果 for循环 if语句)
7.lambda 匿名函数
Lambda 参数:返回值
8内置函数
sorted()排序函数 用特定规则排序
filter() 筛选函数 用特定规则刷选
map()映射
reduce() 和map相反
9.递归
递归就是调用函数自己
最大深度为1000