2013-04-13 84 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)