print
と呼ばれる関数のコピーが欲しいdebug
です。Pythonで関数をエイリアスするにはどうすればよいですか?
5 に答える
debug = print
Python 3 で簡単に割り当てることができます。
Python 2 ではprint
関数ではありません。(など)と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
) は使用できなくなります。古いコードを壊していないのであれば、おそらくこれが道です。
Python 2.x では、次のことができます。
def debug(s):
print(s)
3.xでは、割り当てを使用できます:
debug = print
この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
debug
次のような新しい関数を定義できます。
def debug(text):
print text
Python のバージョンによって異なります。Python 3 では、これを簡単に実行できます。
debug = print
ただし、古いバージョンprint
では組み込みのキーワードと見なされるため、独自の関数でラップする必要があります。
def debug(msg):
print(msg)