24

我想要一份print被调用的函数的副本debug。如何在 Python 中给函数起别名?

4

5 回答 5

31

你可以简单地debug = print在 Python 3 中赋值。

在 Python 2print中不是函数。没有办法给自己一个与(等)debug完全相同的语句。你能做的最好的就是在语句周围写一个包装器:printprint 1,print 1 >> sys.stderrprint

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 回答