SyntaxError: invalid syntaxの意味と原因|Pythonでよくある8パターンと直し方

Pythonを実行したときに、

SyntaxError: invalid syntax

というエラーが表示されて困ったことはありませんか?

SyntaxError: invalid syntax は、Pythonの文法(Syntax)が正しくない場合に発生するエラーです。

特にPython初心者の場合、「どこが間違っているのかわからない」と感じやすいエラーの一つです。

この記事では、SyntaxError: invalid syntax の意味から、よくある原因、具体的な修正方法まで、サンプルコードを使ってわかりやすく解説します。


SyntaxError: invalid syntaxとは

SyntaxError: invalid syntax は、Pythonがプログラムを解析した際に、Pythonの文法として正しくない記述を見つけたときに発生するエラーです。

例えば、次のコードを実行してみます。

print("Hello"

実行すると、次のようなエラーになります。

  File "sample.py", line 1
    print("Hello"
                ^
SyntaxError: invalid syntax

print() の閉じ括弧 ) が不足しているため、Pythonが正しくプログラムを解釈できません。


SyntaxErrorの意味

SyntaxError は、日本語にすると「構文エラー」です。

  • Syntax:構文、文法

  • Error:エラー

つまり、

SyntaxError

は「Pythonの文法が間違っています」という意味です。

さらに、

SyntaxError: invalid syntax

は、

「Pythonとして無効な構文が記述されています」

という意味になります。


SyntaxError: invalid syntaxの原因

SyntaxError: invalid syntax の主な原因には、次のようなものがあります。

  1. :(コロン)の付け忘れ

  2. ()や[]などの閉じ忘れ

  3. "や'の閉じ忘れ

  4. if文などの文法ミス

  5. =と==の間違い

  6. Pythonの予約語の誤使用

  7. 演算子や記号の記述ミス

  8. Pythonのバージョンによる文法の違い

  9. 前の行にある記述ミス

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


原因1:コロン「:」を付け忘れている

Pythonでは、if、for、while、def、classなどの後に、基本的にコロン : を付けます。

例えば、次のコードは間違いです。

if x == 10
    print("10です")

実行すると、

SyntaxError: invalid syntax

となります。

正しくは、

if x == 10:
    print("10です")

です。

コロンが必要な代表例

if x > 0:
    print("正の数")
for i in range(5):
    print(i)
while x < 10:
    x += 1
def hello():
    print("Hello")
class Person:
    pass

Pythonでは、ブロックを開始する文の末尾に : を付けると覚えておくとよいでしょう。


原因2:括弧を閉じ忘れている

(、[、{などを開いたら、対応する閉じ括弧が必要です。

例えば、

print("Hello"

は間違いです。

正しくは、

print("Hello")

です。

リストでも同様です。

numbers = [1, 2, 3

ではなく、

numbers = [1, 2, 3]

とします。

辞書の場合も、

person = {"name": "Taro", "age": 20

ではなく、

person = {"name": "Taro", "age": 20}

とします。


原因3:文字列のクォーテーションを閉じ忘れている

文字列を囲む " や ' の片方が不足している場合も、構文エラーの原因になります。

例えば、

message = "Hello

は間違いです。

正しくは、

message = "Hello"

です。

シングルクォーテーションでも同様です。

message = 'Hello'

のように、開きと閉じを対応させます。


原因4:if文の書き方が間違っている

if文の条件式そのものに文法ミスがある場合もあります。

例えば、

if x = 10:
    print("10です")

これは間違いです。

= は変数に値を代入するための演算子です。

条件を比較するときには == を使用します。

if x == 10:
    print("10です")

=と==の違い

記号 意味 例
= 代入 x = 10
== 等しいか比較 x == 10

Python初心者が非常に間違えやすいポイントです。


原因5:elseの前後に問題がある

if文では、else の書き方にも注意が必要です。

例えば、

if x > 10:
    print("大きい")
else
    print("小さい")

では、else の後ろに : がありません。

正しくは、

if x > 10:
    print("大きい")
else:
    print("小さい")

です。

elifも同様です。

if x > 10:
    print("大きい")
elif x == 10:
    print("10")
else:
    print("小さい")

原因6:予約語を変数名に使用している

Pythonには、特別な意味を持つ「予約語」があります。

例えば、

class = "Python"

はエラーになります。

classはPythonでクラスを定義するときに使用する予約語だからです。

同様に、

def = 10

や、

if = 100

なども使用できません。

主なPythonの予約語

False
None
True
and
as
assert
async
await
break
case
class
continue
def
del
elif
else
except
finally
for
from
global
if
import
in
is
lambda
match
nonlocal
not
or
pass
raise
return
try
while
with
yield

変数名を付けるときは、予約語と重ならないようにしましょう。


原因7:演算子の記述ミス

演算子の使い方を間違えている場合もあります。

例えば、

x = 10 + 

のように、演算子の後に値がないコードは正しい構文ではありません。

正しくは、

x = 10 + 5

です。

また、次のような記述も注意が必要です。

x = 10 **

** はべき乗演算子なので、右側に値が必要です。

x = 10 ** 2

とします。


原因8:Pythonのバージョンが原因

Pythonのバージョンによって利用できる構文が異なる場合があります。

例えば、比較的新しいPythonで追加された構文を、古いPythonで実行すると、

SyntaxError: invalid syntax

になることがあります。

そのため、エラーが出たときにはPythonのバージョンも確認してみましょう。

python --version

環境によっては、

python3 --version

を使用します。

例えば、

Python 3.12.5

のように表示されます。


原因9:エラーが表示された行の前に問題がある

SyntaxError: invalid syntax で特に注意したいのが、矢印 ^ が示している場所が必ずしも本当の原因とは限らないという点です。

例えば、

message = "Hello
print(message)

のように、1行目の文字列を閉じ忘れているとします。

この場合、Pythonが次の行まで文字列として解釈しようとして、別の場所で構文エラーになることがあります。

そのため、

エラーが表示された行だけを見るのではなく、その1~2行前も確認する

ことが重要です。


SyntaxError: invalid syntaxの対処法

SyntaxError: invalid syntax が発生した場合は、次の順番で確認すると効率的です。

1. エラーが発生した行を確認する

エラーメッセージには通常、ファイル名と行番号が表示されます。

File "sample.py", line 5

この場合は5行目を確認します。


2. ^ の位置を確認する

例えば、

print("Hello"
            ^
SyntaxError: invalid syntax

のように ^ が表示される場合があります。

この記号は、Pythonが構文上問題があると判断した位置を示しています。

ただし、本当の原因がその直前にあることもあるので注意してください。


3. : の付け忘れを確認する

次のキーワードを見つけたら、末尾の : を確認します。

if
elif
else
for
while
def
class
try
except
finally
with

例えば、

def hello()

ではなく、

def hello():

です。


4. 括弧を確認する

次の記号が対応しているか確認します。

( )
[ ]
{ }

例えば、

print([1, 2, 3)

は対応していません。

正しくは、

print([1, 2, 3])

です。


5. クォーテーションを確認する

次の記号も確認しましょう。

" "
' '

例えば、

name = "Taro

なら、

name = "Taro"

に修正します。


SyntaxErrorと他のエラーの違い

Pythonにはさまざまなエラーがあります。

SyntaxError は、その中でもプログラムを実行する前の段階で、文法そのものに問題がある場合に発生するエラーです。

例えば、

print("Hello"

では、Pythonはプログラムを正しく解釈できません。

一方、

print(10 / 0)

は文法としては正しいため実行できますが、実行時に、

ZeroDivisionError: division by zero

が発生します。

主なPythonエラー

エラー 主な原因
SyntaxError 文法が間違っている
NameError 定義されていない名前を使用
TypeError 型や操作の組み合わせが不適切
ValueError 値が不適切
IndexError 存在しないインデックスを指定
KeyError 存在しない辞書キーを指定
ZeroDivisionError 0で割った
IndentationError インデントが不正

SyntaxErrorを防ぐポイント

エディタの構文チェックを利用する

Visual Studio Codeなどのエディタを使用すると、文法上の問題をリアルタイムで確認できる場合があります。

コードを書きながらエラー箇所を発見できるため、初心者にもおすすめです。

コードを少しずつ実行する

長いプログラムを一気に書いてから実行するよりも、短いコードを書いて動作を確認するほうが、SyntaxErrorの原因を見つけやすくなります。

例えば、

name = "Taro"
print(name)

まで書いて実行し、問題なければ次の処理を追加します。


SyntaxError: invalid syntaxのまとめ

SyntaxError: invalid syntax は、Pythonの文法が正しくない場合に発生するエラーです。

特に初心者の場合は、次のポイントを確認すると原因を見つけやすくなります。

  • ifやforなどの後に : があるか

  • ()、[]、{} が正しく閉じているか

  • "や'を閉じ忘れていないか

  • =と==を間違えていないか

  • Pythonの予約語を変数名にしていないか

  • 使用しているPythonのバージョンを確認する

  • エラーが表示された行だけでなく、その前の行も確認する

特に重要なのは、SyntaxErrorが表示された行だけでなく、その直前のコードも確認することです。

Pythonの構文エラーは、原因となっている記述と実際にエラーが表示される場所が異なるケースがあります。

まずはエラーメッセージのファイル名・行番号・^の位置を確認し、その周辺のコードをチェックするとよいでしょう。

他のPythonエラーの原因と対処法はPythonエラー一覧と対処法に種類別でまとめています。エラーメッセージの読み方もあわせて解説しています。

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

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