python中生成器,迭代器和裝飾器

2021-08-31 11:28:40 字數 1252 閱讀 5134

解析器在實時生成資料,資料不會駐留在記憶體中。因此,其執行效率很高!

yield 是乙個類似 return 的關鍵字,只是這個函式返回的是個生成器

當你呼叫這個函式的時候,函式內部的**並不立即執行 ,這個函式只是返回乙個生成器物件

當你使用for進行迭代的時候,函式中的**才會執行

list1 = (i**2 for i in range(10) if i%2==0)

for item in list1:

print(item)

def creategenerator():

for i in range(10):

if i%2==0:

yield i**2

mygenerator = creategenerator()

for item in mygenerator:

print(item)

迭代是python最強大的功能之一,是訪問集合元素的一種方式。

迭代器是乙個可以記住遍歷的位置的物件。

迭代器物件從集合的第乙個元素開始訪問,直到所有的元素被訪問完結束。迭代器只能往前不會後退。

迭代器有兩個基本的方法:iter() 和 next()。

字串,列表、元組和字典物件都可用於建立相應的迭代器

list1 = [2,3,4,56,78]

iter1 = iter(list1)

while true:

try:

print(next(iter1))

except stopiteration:

break

list1 = (i**2 for i in range(10) if i%2==0)

print(next(list1))

print(next(list1))

#結果為 0 4

裝飾器是個函式,用於日誌、事務、許可權等的程式設計(aop:面向切面程式設計),是非侵入式的程式設計方式

def loginfo(func):

print("---------------")

print("那誰登陸了我們的系統")

func()

print("那誰登陸了我們的系統")

@loginfo

def login():

print("歡迎誰誰誰登陸")

pass

python中生成器與迭代器

可迭代物件 乙個實現了iter方法的物件是可迭代的 迭代器 乙個實現了iter方法和next方法的物件就是迭代器 iter方法會返回乙個迭代器 生成器都是iterator物件,但list dict str雖然是iterable 可迭代物件 卻不是iterator 迭代器 from collectio...

Python中生成器和迭代器的區別

迭代器 iterator 是乙個實現了迭代器協議的物件,python的一些內建資料型別 列表,陣列,字串,字典等 都可以通過for語句進行迭代,我們也可以自己建立乙個容器,實現了迭代器協議,可以通過for,next方法進行迭代,在迭代的末尾,會引發stopiteration異常。生成器 genera...

python中生成器

生成器 生成器generator 生成器函式generator m i for i in range 5 定義乙個生成器 print type m 判斷m的型別,是乙個生成器 print next m 使用next函式 def inc 定義乙個inc函式 for i in range 5 yield...