1函数名的使用
可以当做参数传递。
2闭包
定义:一个嵌套函数
嵌套内部的函数使用外部(非全局变量)
满足以上两条就是闭包
python中闭包,后进行内存驻留,普通函数执行完就会销毁。
全局里存放会有污染和不安全的现象
面试必问,装饰器---装饰器的本质就是闭包
闭包的弊端:内存会出现泄漏
3迭代器
3.1可迭代对象
可以被for循环的就是可迭代对象
Python中有一个迭代协议:
3.2迭代器
迭代器的特性:
惰性机制
不能从下往上走
一次性的用完就没了
节省内存
for循环的机制:
4.递归(重点重点重点重点重点重点)
自己调用自己
有明确的结束条件
1.函数名的使用
a=函数名
a()
返回值 函数名 #返回函数名的时候不能加括号
函数名:可以当容器的元素
函数名:可以当做参数被传递
2:闭包
1:首先有一个嵌套函数
2:嵌套函数内部函数调用非全局的变量
3:将内部函数名当做返回值返回,在全局调用
怎么查看闭包?
函数名.__closure__返回None 就不是闭包
装饰器的本质就是闭包
优点:安全,装饰器需要
缺点:容易造成内存泄漏
3:迭代器:
可迭代对象:具有__iter__方法就是可迭代对象
迭代器:具有__iter__方法,__next__就是迭代器
for循环的机制就是迭代器
4:递归
def func(n):
n+=1
prinit(n)
if n==5:
return
func(n)
func(2)
小结:递归的效率比较低,尾递归的用时和for的用时是一样的
正常运行的时候比for慢
递归的 最大深度 官方是1000,实际测试998/997
递归的应用场景:
在不明确要循环的次数的时候,可以用递归
递归操作文件目录