回答:
このエラーメッセージは、Python 3を使用して例に従うか、Python 2 print
ステートメントを使用するプログラムを実行しようとしていることを意味します。
print "Hello, World!"
上記のステートメントはPython 3では機能しません。Python3では、出力する値の前後に括弧を追加する必要があります。
print("Hello, World!")
「SyntaxError: 'print'の呼び出しで括弧が欠落しています」は、主にPython 3.4.2で追加された新しいエラーメッセージで、Python 3の実行中にPython 2チュートリアルを実行しようとしているユーザーを支援します。
Python 3では、値の印刷が個別のステートメントから通常の関数呼び出しに変更されたため、括弧が必要になりました。
>>> print("Hello, World!")
Hello, World!
Python 3の以前のバージョンでは、インタープリターは一般的な構文エラーを報告するだけで、何が問題になっているのかについての有用なヒントを提供していません。
>>> print "Hello, World!"
File "<stdin>", line 1
print "Hello, World!"
^
SyntaxError: invalid syntax
なぜ print
文の基本的な形にではなく、あなたは、末尾のスペースをstderrに複数のアイテムを印刷するのではなく行を終了するような、より複雑なものをどうやったのかに関係していなかったのPython 3の通常の機能、となりました。
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の印刷構文に関連するいくつかのエラーメッセージが更新され、対応するPython 3.xの対応が推奨されています。
>>> print "Hello!"
File "<stdin>", line 1
print "Hello!"
^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print("Hello!")?
「print to callの括弧がありません」の場合は、コンパイル時の構文エラーであり、未加工のソースコードにアクセスできるため、提案された置換の残りの行に全文を含めることができます。ただし、現在のところ、その式の前後に適切な引用符を付けようとはしていません(不可能ではありません。十分に複雑であるため、実行されていません)。
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式を引用符で囲むのは簡単です。
コードがPython 2とPython 2の両方で機能する場合は、プログラムの最初にこれをロードすることでこれを実現できます。
from __future__ import print_function # If code has to work in Python 2 and 3!
次に、Python 3の方法で印刷できます。
print("python")
新しい行を作成せずに何かを印刷したい場合-これを行うことができます:
for number in range(0, 10):
print(number, end=', ')
基本的に、Python 3.x以降は使用する必要があります print
では括弧ます。
Python 2.x:「ロードオブザリング」を印刷する
Python 3.x:print( "Lord of the Rings")
print
した声明で2.xでは、それはだ機能で3.xの。現在、これには多くの正当な理由があります。
>>> items = ['foo', 'bar', 'baz'] >>> print(*items, sep='+') foo+bar+baz
Python2.7
またPython3
、との間の構文の変更についてすべて知っていて、コードが正しく、print("string")
そしてさらに
print(f"string")
...
しかし、しばらくデバッグした後、bashスクリプトが次のようにpythonを呼び出していることに気付きました。
python file_name.py
これは、デフォルトでpython2.7
whichを使用してpythonスクリプトを呼び出す効果があり、エラーが発生しました。そこで、bashスクリプトを次のように変更しました。
python3 file_name.py
どちらがおおざっぱにエラーを修正したスクリプトを実行するためにpython3を使用します。
ここでの直接的な回答以外に、Python 2と3の間の他の重要な違いに注意する必要があります。公式のPython Wikiは、ほとんどすべての主要な違いについて説明しており、どちらのバージョンを使用するかについて焦点を当てています。このブログ投稿では、現在のpythonの世界と、Python 3に移行するという、どういうわけか未解決のパズルについて説明しています。
私の知る限り、あなたはPython言語を学び始めています。Python 3ルートを続行する前に、前述の記事を検討する必要があります。構文の一部を変更する必要があるだけでなく、どのパッケージを使用できるか(Python 2の利点)、およびコード内で可能な最適化(Python 3の利点)についても考慮する必要があります。 。