MeWrite Docs

SyntaxError: invalid syntax

Pythonコードの構文が正しくない場合に発生するエラー

概要

SyntaxError: invalid syntax は、Pythonのコードが文法的に正しくない場合に発生するエラーです。インタプリタがコードを解析する段階で検出されるため、実行前にエラーになります。

エラーメッセージ

  File "script.py", line 5
    print("Hello"
                ^
SyntaxError: invalid syntax
  File "script.py", line 3
    if x = 5:
         ^
SyntaxError: invalid syntax

原因

  1. 括弧の閉じ忘れ: ()、[]、{} が対応していない
  2. コロンの欠落: if、for、def、class の後にコロンがない
  3. 代入と比較の混同: = と == の間違い
  4. クォートの不一致: 文字列のクォートが閉じていない
  5. 予約語の誤用: 予約語を変数名に使用
  6. Python 2/3 の違い: print文とprint関数など

解決策

1. 括弧の対応を確認

1
2
3
4
5
6
7
8
9
# ❌ 間違い
print("Hello"
data = [1, 2, 3
config = {"key": "value"

# ✅ 正しい
print("Hello")
data = [1, 2, 3]
config = {"key": "value"}

2. コロンを追加

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# ❌ 間違い
if x > 5
    print("Large")

def my_function()
    pass

for i in range(10)
    print(i)

class MyClass
    pass

# ✅ 正しい
if x > 5:
    print("Large")

def my_function():
    pass

for i in range(10):
    print(i)

class MyClass:
    pass

3. 代入と比較を区別

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ❌ 間違い
if x = 5:        # 代入になっている
    print("Five")

# ✅ 正しい
if x == 5:       # 比較演算子
    print("Five")

# 代入式(Python 3.8+)
if (n := len(data)) > 10:
    print(f"Length is {n}")

4. 文字列のクォートを確認

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# ❌ 間違い
message = "Hello
name = 'World"
sql = "SELECT * FROM users WHERE name = "John"

# ✅ 正しい
message = "Hello"
name = 'World'
sql = "SELECT * FROM users WHERE name = 'John'"
sql = 'SELECT * FROM users WHERE name = "John"'
sql = """SELECT * FROM users WHERE name = "John" """

5. 予約語を避ける

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
# ❌ 間違い(予約語を変数名に使用)
class = "Math"
def = "definition"
return = 5

# ✅ 正しい
class_name = "Math"
definition = "definition"
return_value = 5

# Pythonの予約語一覧
import keyword
print(keyword.kwlist)

6. Python 2から3への移行

1
2
3
4
5
6
7
# Python 2(❌ Python 3ではエラー)
print "Hello"
except Exception, e:

# Python 3(✅ 正しい)
print("Hello")
except Exception as e:

7. インデントの問題

1
2
3
4
5
6
7
8
9
# ❌ 間違い(タブとスペースの混在)
def my_function():
    if True:
	    print("Mixed")  # タブ

# ✅ 正しい(スペース4つで統一)
def my_function():
    if True:
        print("Consistent")

8. f-stringの構文

1
2
3
4
5
6
7
8
9
# ❌ 間違い
name = "World"
print(f"Hello {name")
print(f"Value: {x=}")  # Python 3.7以前

# ✅ 正しい
print(f"Hello {name}")
print(f"Value: {x}")   # Python 3.7以前
print(f"Value: {x=}")  # Python 3.8以降

9. 辞書・セットの構文

1
2
3
4
5
6
7
# ❌ 間違い
data = {1, 2, 3,}   # 末尾カンマ(古いバージョン)
config = {"key" "value"}  # コロン欠落

# ✅ 正しい
data = {1, 2, 3}
config = {"key": "value"}

デバッグのコツ

エラー箇所の特定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# エラーは指定行の前の行が原因のことが多い
# line 5 でエラー → line 4 を確認

# 例
data = [
    1,
    2,
    3    # ← カンマ忘れ(line 4)
    4    # ← ここでエラー(line 5)
]

IDEの活用

  • VSCode、PyCharmなどは構文エラーをリアルタイムで表示
  • 括弧のハイライト機能を活用
  • Linter(pylint、flake8)を導入
1
2
3
4
5
6
7
# flake8でチェック
pip install flake8
flake8 script.py

# pylintでチェック
pip install pylint
pylint script.py

Python の他のエラー

最終更新: 2025-12-08