「Missing parentheses in call to ‘print’」の原因と対処法【Python】

Pythonでプログラムを実行したときに、
SyntaxError: Missing parentheses in call to 'print'
というエラーが表示されることがあります。
これは、Python 3でprintを関数として呼び出す際に、括弧()が付いていないことが主な原因です。
この記事では、「Missing parentheses in call to ‘print’」の意味、発生原因、具体的な修正方法、Python 2とPython 3の違いについて解説します。
「Missing parentheses in call to ‘print’」とは?
Missing parentheses in call to 'print'は、日本語にすると、
という意味です。
たとえば、次のコードをPython 3で実行するとします。
print "Hello"
すると、
SyntaxError: Missing parentheses in call to 'print'
というエラーが発生します。
Python 3では、printは関数として扱われるため、引数を()で囲む必要があります。
正しくは次のように書きます。
print("Hello")
原因はPython 2とPython 3の違い
このエラーを理解するには、Python 2とPython 3におけるprintの違いを知っておく必要があります。
Python 2では括弧なしでも書ける
Python 2では、次のような書き方が可能でした。
print "Hello"
Python 2のprintは、関数ではなく文(print statement)として扱われていました。
そのため、
print "Hello"
print 100
のように記述できます。
Python 3ではprint()関数を使う
Python 3ではprintが関数になりました。
そのため、
print("Hello")
と記述します。
print(100)
print("Python")
print("Hello World")
このように、print()の括弧の中に表示したい値を指定します。
エラーが発生する具体例
たとえば、次のコードです。
name = "Taro"
print "Hello", name
Python 3で実行すると、
SyntaxError: Missing parentheses in call to 'print'
となります。
修正方法
printの後ろに括弧を付けます。
name = "Taro"
print("Hello", name)
実行結果:
Hello Taro
よくある「Missing parentheses in call to ‘print’」の例
例1:文字列を表示する
間違い
print "Hello"
正しい
print("Hello")
例2:変数を表示する
間違い
name = "Taro"
print name
正しい
name = "Taro"
print(name)
例3:複数の値を表示する
Python 2では、
print "Name:", name
という書き方ができます。
Python 3では、
print("Name:", name)
とします。
実行すると、
Name: Taro
と表示されます。
Python 3でprint()を使う方法
Python 3のprint()は関数なので、基本的には次の構文で使用します。
print(表示したい値)
例えば、
print("Python")
です。
変数も表示できます。
name = "Taro"
print(name)
数値も表示できます。
age = 20
print(age)
複数の値を表示する場合は、カンマで区切ります。
name = "Taro"
age = 20
print(name, age)
実行結果:
Taro 20
「print」の後ろに括弧を付ければ解決する?
多くの場合は、単純にprintをprint()に変更すれば解決します。
例えば、
print "Hello"
を、
print("Hello")
に変更します。
ただし、Python 2向けに書かれたプログラムをPython 3へ移植している場合は、print以外にも修正が必要になるケースがあります。
Python 2とPython 3には、print以外にもさまざまな仕様変更があります。
Pythonのバージョンを確認する
「なぜprint "Hello"がエラーになるのか分からない」という場合は、使用しているPythonのバージョンを確認してみましょう。
ターミナルで次のコマンドを実行します。
python --version
または、
python3 --version
例えば、
Python 3.12.5
のように表示されれば、Python 3を使用しています。
Python 3では、
print "Hello"
ではなく、
print("Hello")
と書く必要があります。
Python 2のコードをPython 3で実行するときの注意
このエラーは、古いPython 2のサンプルコードをPython 3で実行した場合によく発生します。
例えば、インターネット上にある古いコードに、
print "Hello World"
と書かれていることがあります。
このコードがPython 2用であれば問題ありません。
しかし、現在一般的に利用されているPython 3で実行するとエラーになります。
Python 3用に書き換える場合は、
print("Hello World")
とします。
print文とprint()関数の違い
Python 2とPython 3では、printの位置付けが異なります。
| 項目 | Python 2 | Python 3 |
|---|---|---|
| printの扱い | 文 | 関数 |
print "Hello" |
○ | × |
print("Hello") |
○ | ○ |
| 現在の主流 | × | ○ |
現在からPythonを学習するのであれば、Python 3を使うのが基本です。
「print」に括弧を付けてもエラーになる場合
例えば、次のように修正したにもかかわらず、
print("Hello")
エラーが出る場合は、別の原因を確認する必要があります。
1. Pythonの実行環境を確認する
エディタでPython 3を選択しているつもりでも、実際には別のPythonが実行されている可能性があります。
次のコマンドで確認できます。
python --version
python3 --version
2. printを変数名として使っていないか確認する
例えば、
print = "Hello"
のように、printという名前を変数として使用すると、その後のコードで問題になる可能性があります。
print = "Hello"
print("World")
この場合、printは関数ではなく文字列になっています。
基本的には、printやstr、listなどのPython組み込み関数・型の名前を変数名として使わないようにしましょう。
Python 2のコードをPython 3に変換する
Python 2の古いプログラムをPython 3で動かす場合は、printだけでなく、以下のような違いにも注意が必要です。
Python 2
print "Hello"
name = raw_input("Name: ")
Python 3
print("Hello")
name = input("Name: ")
Python 2とPython 3では、標準入力や文字列、整数除算などにも違いがあります。
そのため、古いPython 2プログラムをPython 3へ移行する場合は、printだけを修正すれば必ず動くとは限りません。
「Missing parentheses in call to ‘print’」の解決手順
このエラーが発生した場合は、次の順番で確認すると簡単です。
STEP 1:エラーが出た行を確認する
例えば、
SyntaxError: Missing parentheses in call to 'print'
と表示された場合、エラーの直前にあるコードを確認します。
print "Hello"
となっていないか確認してください。
STEP 2:print()に変更する
print("Hello")
に修正します。
STEP 3:Pythonのバージョンを確認する
python --version
または、
python3 --version
を実行します。
STEP 4:古いPython 2コードではないか確認する
ネット上の古い記事や書籍のコードを使っている場合、Python 2向けのコードである可能性があります。
まとめ
「Missing parentheses in call to ‘print’」は、Python 3でPython 2形式のprintを使用したときに発生することが多いSyntaxErrorです。
例えば、
print "Hello"
ではなく、
print("Hello")
と記述します。
ポイントをまとめると、以下の通りです。
-
Python 2では
print "Hello"という書き方ができた -
Python 3では
print()関数を使用する -
print "Hello"はPython 3ではSyntaxErrorになる -
print("Hello")に修正すれば基本的に解決できる -
古いPython 2コードを利用している場合は、
print以外の仕様差にも注意する
現在Pythonを学習する場合は、基本的にPython 3を前提としてコードを書くようにしましょう。
他のPythonエラーの原因と対処法はPythonエラー一覧と対処法に種類別でまとめています。エラーメッセージの読み方もあわせて解説しています。



