簡體   English   中英

Python:產生還是返回

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM