[英]Python: yield or return
所以我寫了這段代碼:
def character(f):
#Reads one character(byte by byte) from the given text file
c = f.read(1)
while c:
yield c
c = f.read(1)
我希望在下面的函數中解析此值。 當我運行此代碼時,什么都不會發生。 沒有錯誤,但也沒有顯示輸出。 dbc_cabin_read
確實達到了計數器值30,但沒有輸出任何內容。 我認為程序不會進入循環。
def dbc_cabin_read(f):
try:
f.seek(0,0)
ctr = 0
for line in f.readlines():
ctr += 1
if ctr == 30:
for c in character(f):
print(c, sep="", end="")
break
finally:
f.close()
在character(f)
,如果我使用return
而不是yield
則會發生類型錯誤:
發生異常:TypeError'NoneType'對象不可迭代
f.readlines()
讀取整個文件。 如果您只想讀取前30行,則可以循環調用f.readline()
。 然后,您可以使用生成器繼續從該位置讀取文件。
for _ in range(30):
f.readline()
for c in character(f):
print(c, sep="", end="")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.