各位大大, 想請教一下為什麼以下
print(next(multi_yield()))和你print(next(multi_obj))結果會不一樣?謝謝??
def multi_yield():
yield_str = ‘first string’
yield yield_str
yield_str = ‘second string’
yield yield_str
multi_obj = multi_yield()
print(next(multi_obj))
#output: first string
print(next(multi_obj))
#output:second string
p rint(next(multi_yield()))
#output: first string
p rint(next(multi_yield()))
#output: second string
print(next(multi_yield()))和你print(next(multi_obj))結果會不一樣?謝謝??
把 yield 換成 return 即可明白
1.為什麼每次 print(next(multi_yield)) 都是 first_string
2.用 return 不叫 iterator,要用多個 yield 才能搭配 next 使用
3.print(next(multi_obj)) 的次數等於裡面寫 yield 的次數,超過的話就會出現訊息
既然「超新手」
我建議先不要學 yield
放在第二階段再來學
這篇是我覺得解釋 yield 的範例寫的最好的
裡面最重要是What are they good for?
那段
如果你看不懂或者沒用到的話
就根本不必學 yield
Generator 的正常作法是先建立一個物件:
multi_obj = multi_yield()
之後再使用next()取得下一個 yield 值:
next(multi_obj)
另一段程式,重複建立物件,當然,都取到第一個值:
next(multi_yield())