函数相关小记(三) 闭包
1.程序运行到函数定义的时候,其实只是把函数存入内存的一块空间里,当函数调用的时候才会执行
2.函数名其实就是变量,所以命名规范跟变量一样
def func():
print('哈哈')
print(func) #打印的是内存地址
func = 3
print(func)#打印的是3
3.函数名可以作为参数传递给函数
def my():
print('我是my')
def proxy(fn):
fn()
proxy(my) 在这里函数名my作为参数传递给proxy
闭包: 内部函数调用外部函数的变量
4.闭包的作用: 1.保护变量不被侵犯 2. 让局部变量能够常驻内存
闭包:
def outer():
a =10
def outer1():
print(a)
return outer1
dir() 可以查看XX数据类型的所有方法
可迭代对象: 可以进行for循环,含有__iter__方法 都是可迭代对象 iterable
迭代器: 可以使用__iter__方法生成迭代器 ,迭代器其实就是内存地址 .迭代器特点: 1.几乎不占用内存 2.惰性机制 3.只能向下
lst = []
it = lst.__iter__() #it就是迭代器 ,迭代器含有__iter__方法,主要是__next__方法
while 1: #模拟for循环
try :
el = it.__next__(lst)
except StopIterration : #防止出现StopIterration异常
break
判断是不是迭代对象方法:
print('__iter__' in dir(lst))
判断是不是迭代器:
print('__next__' in dir(lis))

浙公网安备 33010602011771号