デジタルトレンドナビ
システム開発

2024.05.01

syntax errorとは?解決方法や例外との違いも解説

syntax errorとは?

syntax errorは、Pythonを使って記述した際に発生するエラーです。主に、記述のミスや書き方が間違っている場合に遭遇します。また、記述にミスがなくても例外的に発生する場合もあり、コンピュータが正しく解釈できるように修正しなければなりません。


今回は、syntax errorにスポットを当てて解説します。プログラミング初心者やより理解を深めたい方、自分で修正したい方は参考にしてください。

この記事でわかること

  • syntax errorの概要
  • エラーが発生した際の解決方法
  • メッセージの例と構文が正しくても発生する例外

構文エラー(syntax error)とは?

構文エラー(syntax error)とは?

syntax error(シンタックスエラー)は、プログラムの書き方が間違っているときに表示されます。単純にカッコの閉じ忘れや、不要な全角スペースが入っている場合もエラーになるため、人的ミスが大半だといえるでしょう


どんなに経験豊富なプログラマーでも、間違うことはあります。しかし、Pythonには記述が異なる部分を教えてくれる仕組みがあるので、間違いを簡単に修正できます。


syntax errorが表示された後は、コンピュータが記述を理解できないため、それ以降の処理を停止します。間違っている箇所を修正するとエラーは解消されます。しかし、プログラムを実行した結果が、思い描いていたとおりになるとは限らないことを覚えておきましょう。


また、syntax errorの後ろには間違いと思われる箇所がメッセージで表示されるため、該当する箇所を確認します。何度も経験するうちに、メッセージの内容を覚えたり、間違っている内容を瞬時に把握できたりするようになります。


PythonでSyntax Errorが出た際の解決方法

PythonでSyntax Errorが出た際の解決方法

syntax errorが出た際は、まずはじめにエラーの名称を確認します。メッセージの内容を理解してそれぞれに適した対応をとるのが一般的な流れです。多くはプログラムの記述の間違いを正しく修正することで解決します。


書き間違いがあるときは、主に次のようなメッセージが表示されます。

File “syntax/syntax02.py”, line 1
de test():
^
SyntaxError: invalid syntax

「invalid syntax」は無効な構文であることを伝えているため、書き間違いがあると解釈できます。たとえば、カッコの閉じ忘れやスペースの半角・全角の違い、コマンドや関数のスペルミス、コロン「:」や「”」(シングルクォーテーション)や「””」(ダブルクォーテーション)の違いや書き忘れなどがあげられます。


ひと通り記述した内容をチェックして確認し、該当する部分を修正し、再度プログラムを実行してみましょう。実行して問題なく動作を確認できれば、適切に解決できたといえます。


また、エラーの原因だと思われる部分には、小さな上向きの矢印が表示され、矢印をたよりにチェックするのも良い方法です。上記では、「de test():」の下に矢印があり、本来なら「def」とするはずが「f」が抜けていることを示しています。ひと文字の抜けでもPythonの文法ではないと判断されるため、正しく記述することが重要になります。


例外 (exception)とメッセージの例

例外 (exception)とメッセージの例

文法に間違いがなくても、プログラムを実行した際に例外(exception)エラーが発生することがあります。人的なミスがなくても起こるエラーは、プログラム上では処理できず、型 (type) で発生します。次のようなメッセージが表示された際は、最終行を見てなにが起こっているかを把握することをおすすめします。

Traceback (most recent call last):
File ““, line 1, in
ZeroDivisionError: division by zero

このケースは「ZeroDivisionError」が型であり、数値に演算する際に「10÷0」などのように割る数に「0」が用いられたことを示します。このエラーが起きた際は、割る数をチェックして、適切な数値に修正します。


型の種類はほかにもあり、代表的なものでは次のような型があげられます。

  • IndentationError
  • NameError
  • KeyError
  • TypeError
  • ValueError
  • IndexError
  • ModuleNotFoundError

IndentationErrorは、インデントに問題があるときに表示されます。このケースは、2行目のprint(a)の前にスペースが入っていることが原因です。関数や変数定義の前に半角スペースが入っている場合にも発生します。

File ““, line 1
print(a)
^
IndentationError: unexpected indent

NameErrorは、変数の名前やスペルミスなどで名前が見つからない際に表示され、Pythonでは大文字・小文字の違いでも発生します。次のケースでは、最終行の変数が大文字Aで記載されていることを示しています。

Traceback (most recent call last):
File ““, line 1, in
NameError: name ‘A’ is not defined

KeyErrorは、辞書型にキーを指定して取得する際に、存在しないキーを指定しているエラーです。定義した辞書のキーの確認を行い、正しい内容を記載します。

Traceback (most recent call last):
File ““, line 1, in
KeyError: ‘email’

TypeErrorは、演算するデータ型が異なる場合に発生します。この場合は、変数aとbが異なるデータ型で演算されたことが原因です。

a = 10
b = ‘hello’
a + b

Traceback (most recent call last):
File ““, line 1, in
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

ValueErrorは、型に間違いがなくても値が違う場合に表示されます。この場合は、floatの引数に文字が渡されていることがエラーの原因です。

float(‘AI Academy’)

Traceback (most recent call last):
File ““, line 1, in
ValueError: could not convert string to float: ‘AI Academy’

IndexErrorは、リストなどで格納した値をインデックスで取得する際に、範囲外の値を指定したときに発生します。変数を0、1、2と指定した場合は、インデックスを0から数えるため、取得するインデックスを3とした場合に、次のようなエラーが発生します。

Traceback (most recent call last):
File ““, line 1, in
IndexError: list index out of range

ModuleNotFoundErrorは、読み込むモジュールが存在しない場合に表示されます。モジュールのインストールの有無、名称が間違っていないかを確認します。

Traceback (most recent call last):
File ““, line 1, in
ModuleNotFoundError: No module named ‘AI’

こちらの記事では、Pythonのthreadingモジュールについて解説しています。threadingモジュールの基本や並行処理の注意点も取り上げているため、ぜひあわせてご覧ください。


まとめ

まとめ

今回は、Pythonにおけるsyntax errorと例外エラーについて紹介しました。syntax errorは、プログラムの書き方が間違っている場合に発生し、ほとんどは個人的な記述ミスで、比較的修正しやすいことが多いです。また、構文に間違いがなくても、変数や引数でミスがあると例外エラーが発生するケースもあります。


エラーに遭遇した際には冷静に対処し、問題の根本原因を見つけ出すことが大切です。syntax errorや例外エラーに遭遇する経験を積むことで、プログラミングのスキルが向上し、より堅牢なコードを書くことができるようになります。


Python初心者やこれから理解を深めたい方は、これらのエラーを幾度となく経験するものです。経験を重ねるほど、理解や対応が早まることが期待できるでしょう。


投稿者

  • デジタルトレンドナビ編集部

    システム開発、Webサイト制作、ECサイトの構築・運用、デジタルトランスフォーメーション(DX)など、デジタルビジネスに関わる多岐の領域において、最新のトレンド情報や実践的なノウハウを発信してまいります。