1. 程式人生 > >python3--迭代器、生成器、裝飾器的理解

python3--迭代器、生成器、裝飾器的理解

本文部分程式碼和例子參考菜鳥教程!

迭代器是一個(可以記錄遍歷位置)的物件。迭代器從集合第一個元素訪問,只能從前往後遍歷。

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

list=[1,2,3,4]

 it = iter(list) # 建立迭代器物件

1、print (next(it)) # 輸出迭代器的下一個元素  輸出元素1

print (next(it)) 輸出元素2

2、還可以用for迴圈進行遍歷

list=[1,2,3,4]

it = iter(list) # 建立迭代器物件

for x in it:

print (x, end=" ")

輸出:1 2 3 4

3、while True: try:

print (next(it))

except StopIteration:

sys.exit()

生成器:使用了yield的函式

與普通函式不同的是,生成器函式返回的是迭代器

import sys
 
def fibonacci(n): # 生成器函式 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n): 
            return
        yield a
        a, b = b, a + b
        counter += 1
f = fibonacci(10) # f 是一個迭代器,由生成器返回生成
 
while True:
    try:
        print (next(f), end=" ")
    except StopIteration:
        sys.exit()

執行以上程式,輸出結果如下:

0 1 1 2 3 5 8 13 21 34 55