别名Python中的函数

时间:2013-01-21 14:16:57

标签: python

我想要一个名为print的{​​{1}}函数的副本。我怎样才能在Python中使用别名?

5 个答案:

答案 0 :(得分:22)

您可以在Python 3中简单地指定debug = print

在Python 2中print不是一个函数。无法为自己提供与debugprintprint 1,等完全相同的print 1 >> sys.stderr语句。你能做的最好就是在print语句周围写一个包装器:

def debug(s):
    print s

您还可以禁用print语句并使用Python 3版本:

from __future__ import print_function
debug = print

如果这样做,则不能再使用语句版本(print x)。如果你没有破坏任何旧代码,这可能是你要走的路。

答案 1 :(得分:7)

在Python 2.x中你可以这样做:

def debug(s):
    print(s)

在3.x中你可以使用赋值:

debug = print

答案 2 :(得分:3)

您可以定义一个新功能debug,如:

def debug(text):
    print text

答案 3 :(得分:3)

这取决于您的Python版本。 Python 3只允许你这样做:

debug = print

但是,旧版本认为print是内置关键字,因此您必须将其包装在您自己的函数中:

def debug(msg):
    print(msg)

答案 4 :(得分:2)

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