1. 程式人生 > 程式設計 >python yield關鍵詞案例測試

python yield關鍵詞案例測試

測試環境

win10

python 3.5

yield功能簡介

簡單來說,yield 的作用就是把一個函式變成一個 generator,帶有 yield 的函式不再是一個普通函式,Python 直譯器會將其視為一個 generator

程式碼演示

例子1: 輸出斐波那契數列前 N 個數

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'shouke'
def fab(max):
  n,a,b = 0,1
  result = []
  while n < max:
    result.append(b)
    a,b = b,a + b
    n = n + 1
  return result
for n in fab(5):
  print(n)

以上程式碼雖然可以滿足需求,但是存在的問題:該函式在執行中佔用的記憶體會隨著引數 max 的增大而增大,如果要控制記憶體佔用,最好不要用 List

改進 使用yield

def fab(max):
  n,1
  while n < max:
    yield b   # 使用 yield
    a,a + b
    n = n + 1
for n in fab(5):
  print(n)

例子2:讀二進位制方式取檔案並生成檔案副本

#!/usr/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'shouke'
def read_file(fpath):
  BLOCK_SIZE = 1024
  with open(fpath,'rb') as f:
    while True:
      block = f.read(BLOCK_SIZE)
      if block:
        yield block
      else:
        return
with open('D:\Downloads\\channels-2.1.7-copy.tar.gz','wb') as f:
  for data in read_file('D:\Downloads\\channels-2.1.7.tar.gz'):
    f.write(data)

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。