閉包、叠代器
阿新 • • 發佈:2018-11-01
進行 list -s 內置 while 如何判斷 sin 分享圖片 重復 1.函數名
函數名就是變量名(可以進行賦值),函數名存儲的是函數的地址
需要括號才可以執行
2.閉包:內層函數對外層函數(非全局)變量的引用
作用:1.保護一個變量,讓他不受改變
2.讓一個變量常駐內存
使?__closure__來檢測函數是否是閉包. 使?函數名.__closure__返回cell就是
閉包. 返回None就不是閉包
3.Iterable (可叠代的)
Iterator(叠代器)
d7ir() 查看變量能夠執行的方法(內置函數)
dir(str)) # 查看str能夠執行的操作. 內部的方法
list = [1,2,3,4,5,6]
it = list._iter_()
while 1:
try:
aa = it._next_()
print(aa)
except StopIteration:
break
如何判斷一個數據是否是可叠代對象
1. dir() -> __iter__ 可叠代的
dir() -> __next__ 叠代器
lst = ["秦始皇", "漢武帝", "孝文帝", "隋煬帝", "李世民"]
print("__iter__" in dir(lst)) # True 可叠代的
print("__next__" in dir(lst)) # False 不是叠代器
from collections import Iterable(可叠代的), Iterator(叠代器)
print(isinstance(lst, Iterable)) # True
print(isinstance(lst, Iterator)) # False
print(isinstance({1,2,3}, Iterable)) # True, 可以使用for循環
叠代器特點:1.節省內存
2.惰性機制(不給_next_不給值)
3.只能往前,不可以重復
閉包、叠代器