我想要一份print
被调用的函数的副本debug
。如何在 Python 中给函数起别名?
问问题
37753 次
5 回答
31
你可以简单地debug = print
在 Python 3 中赋值。
在 Python 2print
中不是函数。没有办法给自己一个与(等)debug
完全相同的语句。你能做的最好的就是在语句周围写一个包装器:print
print 1,
print 1 >> sys.stderr
print
def debug(s):
print s
您还可以禁用该print
语句并使用 Python 3 版本:
from __future__ import print_function
debug = print
如果这样做,则不能再使用语句版本 ( print x
)。如果您不破坏任何旧代码,这可能是要走的路。
于 2013-01-21T14:18:33.067 回答
12
在 Python 2.x 中,您可以执行以下操作:
def debug(s):
print(s)
在 3.x 中,您可以只使用赋值:
debug = print
于 2013-01-21T14:19:04.540 回答
3
您可以定义一个新函数debug
,例如:
def debug(text):
print text
于 2013-01-21T14:20:01.660 回答
3
这取决于您的 Python 版本。Python 3 只允许您这样做:
debug = print
但是,旧版本认为print
是内置关键字,因此您必须将其包装在自己的函数中:
def debug(msg):
print(msg)
于 2013-01-21T14:20:22.823 回答
3
该def
方法的优点是回溯可以更清楚地识别别名。这可以帮助说“什么是' print
'?”的用户。如果他们只使用debug
(别名):
>>> def f():
... print x
>>> g = f
>>> g()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in f
NameError: global name 'x' is not defined
>>>
>>> def h():
... return f()
...
>>> h()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in h
File "<stdin>", line 2, in f
NameError: global name 'x' is not defined
于 2015-10-27T21:16:39.550 回答