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()方法吗
迭代器总结