Python 更改现有函数的定义
我想使用Python 更改现有函数的定义,python,python-2.7,Python,Python 2.7,我想使用printI import from\uuuuuu future\uuuuuu打印到文件。我有以下重要信息: from __future__ import print_function 从现在起,我可以使用以下方式打印: print("stuff", file=my_handle) 但是,我在函数中有许多对print的调用,因此我希望能够使用关键字参数绑定到my_handle的函数。因此,我使用部分应用程序: printfile = partial(print, file=my_ha
print
I import from\uuuuuu future\uuuuuu
打印到文件。我有以下重要信息:
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
时都不提及我的文件?print=partial(print,file=my\u handle)
此行在第二个打印
时导致UnboundLocalError,该打印用作partial()
的参数。这是因为名称print
在这个特定函数中被发现是一个局部变量——因为在本例中,在同一行中,更一般地在同一个函数中为其赋值。不能在一个函数中使用相同的变量名,有时引用全局变量,有时引用局部变量
要修复它,您需要使用不同的名称:
fprint=partial(print,file=my_handle)
关于print=printfile
呢?似乎对我有效,但对我无效。如果我这样做,我仍然会得到相同的错误,这显示了printfile=…
行,表示打印未绑定。这是否相关:?@loudandclear:print=printfile
和print=partial(print,file=my_handle)
这两种方法在Python 2.7.4中都适用于我。一定是出了什么事……很有趣。我使用的是Python 2.7.3,这就是原因吗?