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()

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

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

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

 

 生成器

 

 斐波那契数列

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

斐波那契

 

 

 range() 也是生成器

 

 

 

函数写生成器

 

自己来实现range

 

 

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

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

next的作用是唤醒

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

 

 

 


 

 

 

 

迭代器

 

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

 

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

是因为没有next()方法吗

 

迭代器总结

 

posted on 2018-01-22 11:48  骇客神条  阅读(150)  评论(0编辑  收藏  举报

导航