更改现有功能的定义

时间:2013-04-13 19:25:08

标签: python python-2.7

我想使用从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 个答案:

答案 0 :(得分:0)

print = partial(print, file=my_handle)

此行导致第二个print上的UnboundLocalError,用作partial()的参数。这是因为在这个特定函数中发现名称print是一个局部变量---因为你在同一行中分配给它,更常见的是在同一个函数中。您不能在一个函数中使用相同的变量名来有时引用全局变量,有时甚至是本地变量。

要解决此问题,您需要使用其他名称:

fprint = partial(print, file=my_handle)