Code Fix

初級

SyntaxError: '(' was never closed の原因と直し方

丸括弧・角括弧・波括弧の対応が崩れたときに出るエラーです。複数行にまたがる呼び出しや、関数呼び出しの中に別の括弧が入れ子になっている場合に見落としがちです。

エラーメッセージの読み方

  File "main.py", line 1
main.py
ファイル名
1
行番号 — Pythonが構文解析を諦めた位置
SyntaxError
エラークラス — 実行前の構文チェックで検出されました
'(' was never closed
内容 — 期待していたもの、または見つけられなかったもの

このエラーが出る典型パターン

パターン1

 1  print("hello" 
                 ^
File "main.py", line 1 print("hello" ^ SyntaxError: '(' was never closed

開いた丸括弧の数だけ閉じる必要があります。複数行にまたがる呼び出しでは特に見落としがちです。

直し方: (空)) にします。

この問題を解いてみる →

広告
広告スロット(未設定)

パターン2

 1  total = sum([1, 2, 3] 
                         ^
 2  print(total)
File "main.py", line 1 total = sum([1, 2, 3] ^ SyntaxError: '(' was never closed

sum([...])は括弧が二重になっています。角括弧を閉じただけでは、外側の丸括弧はまだ開いたままです。

直し方: (空)) にします。

この問題を解いてみる →

パターン3

 1  nums = [1, 2, 3 
                   ^
 2  print(nums)
File "main.py", line 1 nums = [1, 2, 3 ^ SyntaxError: '[' was never closed

リストの角括弧も同様です。要素を並べただけでは、どこまでがリストかPythonは判断できません。

直し方: (空)] にします。

この問題を解いてみる →

よくある誤解

エラーの行番号は閉じ忘れた場所ではなく、閉じられていない括弧が開かれた場所を指します。エラー行だけを見ても直せないことがあります。

まとめ

SyntaxError: '(' was never closedは初級でつまずきやすい項目です。上の3パターンを実際に手で直すと、エラーメッセージのどこを読めばよいかが掴めます。

演習をはじめる

関連するエラー

広告
広告スロット(未設定)