迭代器,递归,函数名的使用,闭包

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

递归的应用场景:

在不明确要循环的次数的时候,可以用递归

递归操作文件目录

猜你喜欢

转载自www.cnblogs.com/guoqiming/p/10554136.html