キーワード引数 end=' ' で print を実行すると SyntaxError が発生する 質問する

キーワード引数 end=' ' で print を実行すると SyntaxError が発生する 質問する

このコードを試すと:

if Verbose:
   print("Building internam Index for %d tile(s) ..." % len(inputTiles), end=' ')

無効な構文であるSyntaxErrorというクレームが届きます。end=' '

なぜこのようなことが起こるのでしょうか?


見るPython で「SyntaxError: 'print' の呼び出しに括弧がありません」とはどういう意味ですか?逆の問題の場合。

見るPython 2.7 ではなぜ print 内の括弧は任意なのでしょうか?printPython 2 でを文として扱う場合の一般的な結果については、 を参照してください。

ベストアンサー1

Python 3.x を使用していますか?printはまだステートメントであるため、構文は Python 2.x では使用できません。

print("foo" % bar, end=" ")

Python 2.xでは以下と同じである

print ("foo" % bar, end=" ")

または

print "foo" % bar, end=" "

つまり、タプルを引数として print を呼び出すことになります。

これは明らかに悪い構文です (リテラルはキーワード引数を取りません)。Python 3.x ではprint実際の関数なので、キーワード引数も取ります。

Python 2.x での正しい慣用句は次のとおりend=" "です。

print "foo" % bar,

(最後のカンマに注意してください。これにより、行末は改行ではなくスペースで終わります)

出力をさらに制御したい場合は、sys.stdout直接使用することを検討してください。これにより、出力に特別な魔法が実行されることはありません。

もちろん、Python 2.x の比較的最近のバージョン (2.5 にはあるはずですが、2.4 についてはわかりません) では、__future__モジュールを使用してスクリプト ファイルで有効にすることができます。

from __future__ import print_function

unicode_literalsおよび他の便利な機能 (など)についても同様ですwith_statement。ただし、これは Python 2.x の非常に古いバージョン (つまり、機能が導入される前に作成されたバージョン) では動作しません。

おすすめ記事