2013-04-13 87 views
1

我想打印使用print我從__future___導入文件的定義。我有以下爲導入:更改現有功能

from __future__ import print_function 

從現在開始,我可以打印使用:

print("stuff", file=my_handle) 

不過,我有一個函數多次調用print,所以我希望能夠使用關鍵字參數綁定到my_handle的函數。所以,我使用部分應用程序:

printfile = partial(print, file=my_handle) 
printfile("stuff") 
printfile("more stuff") 

這是我的意圖。但是,有什麼辦法可以通過部分應用關鍵字參數來改變爲print本身的定義?我曾嘗試是:

print = partial(print, file=my_handle) 

但我得到了一個錯誤說:

UnboundLocalError: local variable 'print' referenced before assignment 

有沒有辦法使用print不用每次都提我的檔案?

+1

什麼'打印= printfile'?似乎爲我工作。 –

+0

它不適合我。如果我這樣做,我仍然會得到相同的錯誤,它顯示了'printfile = ...'這一行,表示打印沒有綁定。 – loudandclear

+0

這是相關的:http://stackoverflow.com/questions/550470/overload-print-python? – fsw

回答

0

print = partial(print, file=my_handle)

這條線使UnboundLocalError在第二print,用作參數partial()之一。這是因爲該名print被發現是在這個特殊的函數的局部變量---因爲你分配給它,在這種情況下,在同一行,一般都在相同的功能。您不能在一個函數中使用相同的變量名稱來有時引用全局變量,有時引用局部變量。

要解決它,你需要使用不同的名稱:

fprint = partial(print, file=my_handle)