0
我知道yield
返回一個生成器。但我不明白爲什麼碼1只返回一個字符,但是代碼2不會:這些示例中的收益率和收益之間的差異
代碼1
def foo(arg:str)-> str:
for char in arg:
return char
代碼2
def bar(arg:str)-> str:
for char in arg:
yield char
yield
像return
,都返回一個對象。但爲什麼以下結果有差異?
>>> for i in foo('stackoverflow.com'): print(i)
s
>>> for i in bar('stackoverflow.com'): print(i)
s
t
a
c
k
o
v
e
r
f
l
o
w
.
c
o
m
你說你理解發電機,所以我將假設一個函數是什麼。當您返回一個函數時,會發生堆棧展開,並且該函數將結束。這就是爲什麼當你返回時,你只能得到第一個字符。 – thefourtheye