SyntaxError: ‘(‘ was never closed の原因と対処法|Pythonで「括弧が閉じていません」と表示されたときの直し方

Pythonでプログラムを書いていると、次のようなエラーが表示されることがあります。
SyntaxError: '(' was never closed
これは、開いた丸括弧 ( に対応する閉じ括弧 ) が見つからないときに発生するSyntaxErrorです。
たとえば、次のコードです。
print("Hello"
実行すると、
SyntaxError: '(' was never closed
となります。
この記事では、SyntaxError: '(' was never closed の意味、原因、具体的な修正方法、似たエラーとの違いについて、Python初心者向けにわかりやすく解説します。
SyntaxError: ‘(‘ was never closed の意味
SyntaxError: '(' was never closed
を日本語にすると、
(が閉じられていません
という意味です。
Pythonでは、丸括弧を使った場合、必ず対応する閉じ括弧 ) が必要です。
print("Hello")
このコードでは、
(
)
がセットになっています。
一方、次のコードでは、
print("Hello"
( はありますが、対応する ) がありません。
そのため、
SyntaxError: '(' was never closed
が発生します。
SyntaxError: ‘(‘ was never closed の主な原因
このエラーの原因として、特に多いのは次のケースです。
-
)を書き忘れている -
関数の引数が複数行になっている
-
リスト・辞書などの中で括弧を間違えている
-
長いコードの途中で括弧を閉じ忘れている
-
文字列やコメントの影響で、エラー箇所が分かりにくくなっている
順番に見ていきましょう。
1. ) を書き忘れている
最も基本的な原因です。
たとえば、
print("Hello"
では、print( の ( を閉じる ) がありません。
修正前
print("Hello"
修正後
print("Hello")
これでエラーは解消します。
2. 関数の引数で閉じ括弧を忘れている
関数を呼び出すときにも、よく発生します。
result = max(10, 20, 30
max( に対する ) がありません。
正しくは、
result = max(10, 20, 30)
です。
同様に、次のようなコードでも発生します。
name = input("名前を入力してください: "
修正すると、
name = input("名前を入力してください: ")
となります。
3. 複数行にわたるコードで括弧を閉じ忘れる
括弧の中が複数行にわたる場合、閉じ括弧を忘れやすくなります。
たとえば、
result = sum(
[10, 20, 30, 40]
では、sum( の ) がありません。
正しくは、
result = sum(
[10, 20, 30, 40]
)
です。
Pythonでは、丸括弧 () の中であれば、複数行に分けて記述できます。
4. ( と ) の数が合っていない
複雑なコードでは、括弧の数が合っていないケースがあります。
たとえば、
print(max(10, 20, 30)
このコードでは、
print(
max(
10, 20, 30
)
となっており、最後に print( を閉じる ) が必要です。
正しくは、
print(max(10, 20, 30))
です。
括弧が入れ子になっている場合は、内側の括弧から閉じることを意識するとミスを減らせます。
5. リストや辞書などと組み合わせている
Pythonでは、() だけでなく、
-
() -
[] -
{}
などの括弧を使用します。
たとえば、
data = {
"name": "Taro",
"age": 20
このコードでは、辞書を開始した { に対応する } がありません。
正しくは、
data = {
"name": "Taro",
"age": 20
}
です。
また、次のようなコードにも注意が必要です。
data = [
(1, 2),
(3, 4)
[ に対応する ] がありません。
修正すると、
data = [
(1, 2),
(3, 4)
]
となります。
SyntaxError: ‘(‘ was never closed の具体例
ここでは、よくあるパターンをまとめて確認します。
例1:print関数
エラー
print("Python"
修正
print("Python")
例2:len関数
エラー
numbers = [1, 2, 3]
print(len(numbers)
修正
numbers = [1, 2, 3]
print(len(numbers))
例3:関数の定義
関数定義では、括弧だけでなくコロン : も必要です。
def greet(name:
print(name)
これは括弧が閉じられていないため、構文エラーになります。
正しくは、
def greet(name):
print(name)
です。
エラーが指している行だけを確認しない
SyntaxError: '(' was never closed が表示された場合、エラーメッセージに表示された行だけを修正すればよいとは限りません。
たとえば、
print(
"Hello"
x = 10
のようなコードでは、Pythonが後続の行まで読み込んだ結果、
SyntaxError: '(' was never closed
と判断することがあります。
そのため、エラーが発生した行だけではなく、その少し前から括弧の対応を確認することが重要です。
括弧の対応を確認する方法
Pythonコードで括弧を確認するときは、次の3種類を意識しましょう。
| 開始 | 終了 |
|---|---|
( |
) |
[ |
] |
{ |
} |
たとえば、
data = {
"numbers": [
(1, 2),
(3, 4)
]
}
では、
{ → }
[ → ]
( → )
がそれぞれ対応しています。
VS Codeなどのエディタで確認する
PythonをVS Codeなどのエディタで書いている場合は、括弧の対応を確認する機能を利用できます。
たとえば、
print(
max(
10,
20
)
のようなコードでは、括弧の対応関係を確認すると、print( の閉じ括弧がないことに気づきやすくなります。
コードが長くなった場合は、1行にすべて書くのではなく、適切に改行して括弧の構造を見やすくすることも有効です。
括弧を1つずつ数える
どうしても原因が分からない場合は、エラーが発生した付近で、
(
)
の数を確認してみましょう。
たとえば、
result = calculate(
add(10, 20),
multiply(30, 40)
では、
calculate(
add(...)
multiply(...)
となっています。
calculate( を閉じる ) が必要なので、
result = calculate(
add(10, 20),
multiply(30, 40)
)
とします。
SyntaxError: '(' was never closed と SyntaxError: invalid syntax の違い
どちらも構文エラーですが、意味が異なります。
SyntaxError: ‘(‘ was never closed
(
に対応する
)
がないことを示します。
SyntaxError: invalid syntax
SyntaxError: invalid syntax
は、Pythonの構文として正しくない場合に表示される、より一般的なSyntaxErrorです。
そのため、
invalid syntaxよりも(was never closed のほうが原因を特定しやすい
と考えることができます。
SyntaxError: ‘)’ was never opened との違い
似たエラーに、
SyntaxError: ')' was never opened
があります。
これは、
)に対応する(が見つからない
という意味です。
つまり、
( was never closed
( → )
の ) がない
) was never opened
( → )
の ( がない
という違いです。
SyntaxError: ‘(‘ was never closed の対処法まとめ
エラーが発生した場合は、次の順番で確認するとよいでしょう。
1. ( を探す
print(
など、開き括弧がある場所を確認します。
2. 対応する ) を探す
print(...)
のように閉じ括弧があるか確認します。
3. [] や {} も確認する
[
]
{
}
の対応も確認します。
4. エラー行より前も確認する
エラーが表示された行よりも前に、閉じ括弧の書き忘れがないか確認します。
5. コードを整形する
長い1行を複数行に分けることで、括弧の対応関係を確認しやすくなります。
まとめ
SyntaxError: '(' was never closed は、Pythonでよく遭遇する構文エラーの一つです。
主な原因は、開き括弧 ( に対応する閉じ括弧 ) を書き忘れていることです。
たとえば、
print("Hello"
は、
print("Hello")
に修正します。
ただし、エラーが表示された行だけではなく、その少し前のコードに括弧の閉じ忘れがないか確認することも重要です。
特に、
(
)
だけでなく、
[
]
{
}
の対応関係も確認しましょう。
「開いた括弧を必ず閉じる」ことを意識するだけで、SyntaxError: '(' was never closed の多くは簡単に解決できます。
他のPythonエラーはPythonエラー一覧と対処法に種類別でまとめています。



