24

printと呼ばれる関数のコピーが欲しいdebugです。Pythonで関数をエイリアスするにはどうすればよいですか?

4

5 に答える 5

31

debug = printPython 3 で簡単に割り当てることができます。

Python 2 ではprint関数ではありません。(など)と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

この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 に答える
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 に答える