バグ・エラー基礎
Python でアプリ開発を行っているとよく遭遇するバグ・エラーを紹介する。
ちなみに、2つの違いは以下の通り。それぞれの代表的な項目と原因を記載する。
- バグ: 意図しない挙動全般
- エラー:文法的な間違い。プログラムを実行しようとしてもできない。
バグの例
- 仕様を満たしていない
ex) サーマルプリンターでレシート発行が可能だが、桁数が少ない。
原因:実装ミス - 想定される特定の条件下で意図した挙動を示さない
ex) 通常はレシートを発行できるが、USBの挿抜を5回、初期化コマンドを2回受け取ったときのみ、レシート発行不可能。
原因:検証ミス - そもそも想定されていない操作で操作不可能な状態に陥る。
ex) 異なる2つのドライバー・2つのPCから同時にスクリプトを受け取る
原因:例外処理の実装ミス(作り込みの不足)
主なエラー
- SyntaxError:
そもそもコードとして認識できないような間違え方をした場合に発生する。
主に以下の原因が挙げられる。これらは通常のエディタでは発見できないのでVScode等を使うべし。
原因1:全角のスペースが紛れ込んでいる。<<< 全角の文字は使用不可
原因2:開いた括弧が閉じられていない。ex) print(“Hello World!”
原因3:関数・型などの名前が間違っている。ex) flaot <<< 正しくはfloat - NameError:
定義されていない変数を使用したときに発生する。
ライブラリーをimportせずに使用しようとした場合にも発生する。 - TypeError:
演算(計算)できないようなコードが存在すると発生する。
ex) a=1,b=”python”, c = a + b # 文字列と整数は足し算できない。
バグ・エラーの解決策
多くの場合、このページに書いてある情報が原因で、これを修正するだけでうまくいく。
なお、バグ・エラーの解決手段はググることである。
まずもって、解決策が存在しないということはない。
エラーを含むコードと正常なコードの比較
NameError: name 'np' is not defined
SyntaxError: unexpected EOF while parsing
TypeError: unsupported operand type(s) for +: 'int' and 'str'
NameError: name 'm' is not defined
なおエラーは実行時に最も最初にエラーになるもののみが表示される。
そのため上記の例でははじめのNameErrorのみが表示される。
これを修正して再度実行するとSyntaxErrorが表示され……、というようにエラがー複数ある場合には順次解決していく必要がある。