Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 更改现有函数的定义_Python_Python 2.7 - Fatal编程技术网

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,这就是原因吗?