5

次のような単純なデバッグ/ログ出力の代わりに:

print "error ", error_number

次のような必要に応じて拡張できるログ関数を使用したいと思います。

def log(condition, *message):
    if(<do something here...>):
        print(*message)
        <perhaps do something more...>

次のように呼び出します。

log(condition, "error ", error_number)

しかし、次の構文エラーが発生します。

print *message
      ^ SyntaxError: invalid syntax

印刷機能の制限ですか、それとも機能させる方法はありますか? そうでない場合、私が使用できる print に相当するものはありますか?

ところで、私はPython 2.7を使用しています...

4

4 に答える 4

3

直接使用する必要がありますprint message。これで十分です(余分な引数のタプルが出力されます)。


以前の回答への追加:Python 2.xでは、print関数ではなくステートメントです 、タプルでステートメントをprint(arg1, arg2)使用する場合と同様に有効です。print(arg1, arg2)

print arg1, arg2これは、ご覧のとおりとは少し異なります。

>>> print 'aaa', 'bbb'
aaa bbb
>>> print('aaa', 'bbb')
('aaa', 'bbb')

さて、themelの答えに加えて:

ケース1*引数タプルの展開に使用しない

>>> def p(*args):
...     a(args)  # <== args is a tuple
>>> def a(*args):
...     print args  # <== args is a tuple (but nothing else can be used)
>>> p('bb')
(('bb',),)

結果はタプルのタプルです。

ケース2:引数を拡張するp

>>> def p(*args):
...      a(*args)  # <== now arguments are expanding
...
>>> p('bb')
('bb',)

結果は、に与えられた引数のタプルですp

正しい使用法ですが、これ*argsはステートメントでは許可されていません。

于 2011-11-09T08:37:11.070 に答える