快速答案
本答案頁包含 Python 生成器 的 4 道選擇題、4 道填空題和 4 道輸出預測題,每題都給出準確答案和簡短解釋。
答案已完整展示,建議先嘗試作答,再用本頁核對。第一次練習最好從互動練習頁開始。
生成器函式裡的 yield 會做什麼?
答案: 暫停並產生一個值
為什麼: yield 把一個值交給呼叫方,並暫停函式。
程式碼的輸出結果是什麼?
def gen():
yield 1
yield 2
print(list(gen()))答案: [1, 2]
為什麼: list 會消費兩個 yield 出來的值並建構列表。
呼叫生成器函式會回傳什麼?
答案: 生成器物件
為什麼: 只有推進生成器時函式體才會執行。
next() 到達生成器末尾時會發生什麼?
答案: 拋出 StopIteration
為什麼: StopIteration 表示生成器已經沒有更多值。
補全一次產生一個值的關鍵字。
def one():
____ 1
print(next(one()))答案: yield
為什麼: yield 會產生一個值並暫停函式。
補全取出下一個值的內建函式。
def one():
yield 1
value = ____(one())
print(value)答案: next
為什麼: next 會向生成器請求下一個值。
補全把生成器變成列表的函式。
def gen():
yield 1
print(____(gen()))答案: list
為什麼: list 會消費生成器並生成列表。
補全消費這些平方值的函式。
print(____(n * n for n in range(4)))答案: sum
為什麼: sum 會把生成器表達式產生的每個值相加。
螢幕上會顯示什麼?
print(list(n for n in range(3)))答案: [0, 1, 2]
為什麼: 生成器表達式產生 0、1、2,list 把它們收集起來。
這段程式碼會輸出什麼?
def g():
yield "a"
print(next(g()))答案: a
為什麼: next 取出第一個 yield 的字串 a。
執行結果是什麼?
def g():
yield 1
yield 2
x = g()
print(next(x), next(x))答案: 1 2
為什麼: 兩次 next 呼叫分別回傳一和二,列印在同一行。
這段程式列印出什麼?
def g():
for n in range(3):
yield n * 2
print(list(g()))答案: [0, 2, 4]
為什麼: 生成器產生 0、2、4,list 顯示這些值。
先試一遍題目
打開 Python 生成器 練習頁,用即時回饋回答同樣的 12 道題。