day13-生成器

def generator():
    print(1)
    yield 'a'
rcp = generator()
print(rcp.__next__())

  只要含有yield關鍵字的函數都是生成器函數。yield不能和return共用且需要寫在函數內。

  生成器函數 : 執行之後會得到一個生成器作為返回值。

def generator():
    print(1)
    yield 'a'
    print(2)
    yield 'b'
rcp = generator()
put = rcp.__next__()
print(put)
put = rcp.__next__()
print(put)

  yield沒有結束一個函數,可以連續打印。

# 產生200個字符串def putStr():    for i in range(200):        yield '我最帥%d'%iput = putStr()for i in put:    print(i)

# 可不可以在兩百個字符串中只取五十個,然後再緊接着上一次結束的地方再取五十個呢?def putStr():    for i in range(200):        yield '你最帥%s'%iput = putStr()count = 0for i in put:    print(i)    count += 1    if count >= 50:        breakprint('----------------------')for i in put:    print(i)    count += 1    if count >= 100:        break

  生成器可以生成n個你想要的字符串。

# 監聽文件輸入
def func(filename):
    f = open(filename,encoding='utf-8')
    while True:
        line = f.readline()
        if line.strip():
            yield line
g = func('file')
for i in g:
    print(i)

  一個利用監聽器實現的監聽文件輸入操作。

点赞

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *