我有一個讀取大文件(我在這裏簡單的閱讀一個非常小的Excel文件)的2個不同版本的函數。蟒蛇 - 裝飾一個發電機
Version 1:
閱讀整篇文件,並返回行列表
Version 2:
與發電機的幫助下讀它一行行
我想裝飾這些2個函數的輸出,並添加了一些每行結束基於不同的邏輯,這就是爲什麼我認爲我需要不同的定製裝飾。但我無法弄清楚如何通過裝飾者的幫助來實現它?特別是如果我有收益而不是回報。
版本1:
@dec
def readxls():
fileBook = xlrd.open_workbook('../decorator.xls')
sh = fileBook.sheet_by_name("Sheet1")
out = []
for row_index in xrange(1, sh.nrows):
out.append(sh.row_values(row_index))
return out
版本2:
@dec2
def readxls():
fileBook = xlrd.open_workbook('../decorator.xls')
sh = fileBook.sheet_by_name("Sheet1")
for row_index in xrange(1, sh.nrows):
yield sh.row_values(row_index)
假設Excel文件是這樣的:
Col1 Col2 Col3
Val11 Val12 Val13
Val21 Val22 Val23
我想裝飾的輸出得到以下結果:
Col1 Col2 Col3 0 Col1Col2
Val11 Val12 Val13 1 Val11Val12
Val21 Val22 Val23 2 Val21Val22
爲了得到類似這樣的輸出,我的dec1和dec2函數應該如何?