一、函数的应用(第一类对象)
函数的命名规则和变量一样
函数名就是一个变量
函数名可以作为参数传递给函数
二、闭包
1.含义:在内层函数中访问外层函数的局部变量
2.闭包的作用
1.保护你的变量不受侵害
2.可以让一个变量常驻内存
__closurse__ 如果是None,则不是闭包
def fun(): a = 10 def inner(): print(a) return innerret = fun()ret()
三、迭代器
dir(数据类型) dir查看xx类型的数据可以接收那些方法
__iter__ 获取当前对象的迭代器
所有的带__iter__可以使用for循环的都是可迭代对象
可迭代对象可以使用__iter__()来获取迭代器
迭代器里有__next__()
迭代器的特点:
1.只能向前
2.惰性机制
3.节省内存(生成器)
可以通过dir()来判断数据是否是可迭代的,以及数据是否是迭代器
判断方法:
from collections import Iterable # 可迭代对象
from collections import Iterator # 迭代器
isinstance(数据,Iterable)
isinstance(数据,Iterator)
from collections import Iterable # 可迭代对象from collections import Iterator # 迭代器lst = ["aaa", "bbb", "ccc", "ddd", "fff"]print(isinstance(lst,Iterable)) # Trueprint(isinstance(lst,Iterator)) # False
for循环的内部机制
1.首先获取到迭代器
2.使用while循环获取数据
3. it.__next__()来获取数据
4.处理异常
try:
xxxx
except StopIteration:
xxx
lst = ["aaa", "bbb", "ccc", "ddd", "fff"]it = lst.__iter__()while 1: try: el = it.__next__() print(el) except StopIteration: break