Python yield關鍵字



Python 的yield關鍵字用於建立一個生成器函式。這是一種記憶體高效的函式型別,可以用作迭代器物件。它是一個區分大小寫的關鍵字。在一個函式中,它返回一個表示式或物件。

函式的yield語句返回一個生成器物件,而不是僅僅將值返回給包含該語句的函式呼叫。

語法

以下是Pythonyield關鍵字的語法:

def fun_name():
    statements
	yield expression 

示例

以下是Pythonyield關鍵字的基本示例:

#defined generator
def fun1():
    yield "Hello"
    yield "Welcome"
    yield "To"
    yield "Tutorialspoint"
    
result_1 = fun1()
print(type(result_1))
#iterating through generator
for i in result_1:
    print(i)

輸出

以下是上述程式碼的輸出:

<class 'generator'>
Hello
Welcome
To
Tutorialspoint

使用yield與元組

yield關鍵字返回可迭代物件,例如元組、列表、集合等。

示例

這裡,我們建立了一個名為even的生成器,它將以元組的形式返回偶數。

def even(n):
    for i in range(n):
        if i%2==0:
            yield i
            
even_num = even(20)
print(tuple(even_num))

輸出

以下是上述程式碼的輸出:

(0, 2, 4, 6, 8, 10, 12, 14, 16, 18)

yield和return的區別

在Python中,returnyield都用於從函式傳送值,但它們的操作方式不同。return退出函式並返回單個值或物件,立即終止函式的執行。而yield用於生成器函式中,暫停函式的執行並返回一個值,允許函式在下一次呼叫時從中斷處繼續執行。這使得yield非常適合於隨時間推移生成一系列值,而return用於單個結果或函式需要結束時。

示例

這裡,我們定義了函式和生成器。函式返回單個值,而生成器返回元素列表。

#defined a function
def power(n):
    return n**2
#defined a generator    
def power_1(n):
    for i in range(n):
        yield i**2
		
result_1 = power(4)
result_2 = (list(power_1(4)))
print("Return :", result_1)
print("Yield :", result_2)

輸出

以下是上述程式碼的輸出:

Return : 16
Yield : [0, 1, 4, 9]
python_keywords.htm
廣告