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. ) を書き忘れている

  2. 関数の引数が複数行になっている

  3. リスト・辞書などの中で括弧を間違えている

  4. 長いコードの途中で括弧を閉じ忘れている

  5. 文字列やコメントの影響で、エラー箇所が分かりにくくなっている

順番に見ていきましょう。


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エラー一覧と対処法に種類別でまとめています。

プログラミング学習に興味がある方は、まずは無料体験会へ

無料体験会・お申し込みはこちら