python-函数进阶

命名空间

存放名字的地方

locals:是函数内的名称空间,包扩局部变量和形参

globals:

 

全局范围:全局存活,全局有效

局部范围:局部存活,局部有效

 

查看当前的作用域,globals(),locals()

 

 

 


 

 

 

 

作用域的查找顺序

legb

l:locals  是函数内的名字空间,包括局部变量和形参

e:enclosing  相邻的上一级,外部嵌套函数的名字空间

g:globals  全局变量

b:bulitins  内置模块的名字空间

 

 

 

 


 

 

 

 

闭包

外部可以执行内部的函数,可以用内部的函数作用域的值

函数里边套了个子函数,被返回了

 

 

 

 


 

 

 

装饰器

 

https://www.cnblogs.com/alex3714/articles/5765046.html

 

 @login

def henan():

print("河南专区")

等价于

henan = login(henan)

 

 

 


 

 

 

生成器 

调用生成器的方法是next()

python-函数进阶_第1张图片

生成器解释:只是一个公式创建一次取一次

流水线只能往前走,保存的是公式

当走到最后的时候就会报错

python-函数进阶_第2张图片

 

 生成器

 python-函数进阶_第3张图片

 斐波那契数列

特别复杂的算法,除第一个和第二个数外,任意一个数都可以由前两个数相加

python-函数进阶_第4张图片

python-函数进阶_第5张图片斐波那契

 

python-函数进阶_第6张图片

python-函数进阶_第7张图片

 

 range() 也是生成器

python-函数进阶_第8张图片

 

 

 

函数写生成器

 

自己来实现range

 python-函数进阶_第9张图片

python-函数进阶_第10张图片

 python-函数进阶_第11张图片

只要函数里面有yield就是一个生成器

python-函数进阶_第12张图片

生成器的创建方式和?️了yield之后

next的作用是唤醒

send作用:1,唤醒并继续执行。2,发送一个信息到生成器内部

 

 

 


 

 

 

 

迭代器

python-函数进阶_第13张图片

 

直接用于for循环对对象统称为可迭代对象 

 

生成器都是iterator,列表,字典,字符串虽然是循环,但不是迭代器,但可以变成迭代器

是因为没有next()方法吗

 

迭代器总结

python-函数进阶_第14张图片

 

转载于:https://www.cnblogs.com/hyperx233/p/8269140.html

你可能感兴趣的:(python-函数进阶)