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

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

Python でステートメントを使用しようとするとprint、次のエラーが発生します。

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: Missing parentheses in call to 'print'

それはどういう意味ですか?


見るキーワード引数 end=' ' で print を実行すると SyntaxError が発生します逆の問題の場合。

見るPython 3 括弧なしで印刷する回避策と、Python 3 のステートメントのように動作させることprintができない確認について。

ベストアンサー1

Python 2 の print ステートメントで Python 3 の構文を使用しようとすると、エラー メッセージ「SyntaxError: Missing parentheses in call to 'print'」が表示されます。

例:

print "Hello, World!"

Python 3 では、print ステートメントが print() 関数に置き換えられ、印刷する値を括弧で囲むことが必要になりました。

解決

print("Hello, World!")

Python 3 では、print ステートメントが print() 関数に置き換えられ、印刷する値を括弧で囲むことが必要になりました。

>>> print("Hello, World!")
Hello, World!

Python 3 の以前のバージョンでは、インタープリターは一般的な構文エラーを報告するだけで、何が間違っているのかについての有用なヒントは提供しませんでした。

>>> print "Hello, World!"
  File "<stdin>", line 1
    print "Hello, World!"
                        ^
SyntaxError: invalid syntax

Python 3 でなぜ 通常の関数になったかについてはprint、ステートメントの基本形式とは関係なく、行末ではなく末尾にスペースを付けて複数の項目を stderr に出力するなど、より複雑な処理を実行する方法に関係していました。

Python 2の場合:

>>> import sys
>>> print >> sys.stderr, 1, 2, 3,; print >> sys.stderr, 4, 5, 6
1 2 3 4 5 6

Python 3の場合:

>>> import sys
>>> print(1, 2, 3, file=sys.stderr, end=" "); print(4, 5, 6, file=sys.stderr)
1 2 3 4 5 6

2017 年 9 月の Python 3.6.3 リリース以降、Python 2.x の print 構文に関連する一部のエラー メッセージが更新され、Python 3.x の対応する構文が推奨されるようになりました。

>>> print "Hello!"
  File "<stdin>", line 1
    print "Hello!"
                 ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?

「print の呼び出しに括弧がありません」というケースはコンパイル時の構文エラーであり、したがって生のソース コードにアクセスできるため、提案された置換に行の残りの部分の完全なテキストを含めることができます。ただし、現時点ではその式の周囲に配置する適切な引用符を見つけようとはしません (不可能ではありませんが、非常に複雑なため実行されていません)。

TypeError右シフト演算子の起点もカスタマイズされています。

>>> print >> sys.stderr
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for >>: 'builtin_function_or_method' and '_io.TextIOWrapper'. Did you mean "print(<message>, file=<output_stream>)"?

このエラーは、コードのコンパイル時ではなく実行時に発生するため、生のソース コードにアクセスできず、ユーザーが実際に入力したものではなく、メタ変数 ( および<message>)<output_stream>が提案された置換式で使用されます。構文エラーの場合とは異なり、カスタム右シフト エラー メッセージ内の Python 式を引用符で囲むのは簡単です。

おすすめ記事