Pythonのランタイムエラー(RuntimeError)とは?仕組みと対処法を解説
構文エラーとランタイムエラーの違い
Pythonプログラミングにおけるエラーは、大きく分けて「構文エラー(Syntax Error)」と「実行時エラー(Runtime Error)」の2種類があります。
構文エラーは、Pythonがコードの意味を理解できない場合に発生します。書かれた命令自体が文法的に正しくないため、プログラムはそもそも実行されません。
一方、ランタイムエラー(実行時エラー)は、Pythonがコードの意味を理解したものの、その指示に従って処理を実行している最中に問題が発生するケースを指します。「ランタイム」と呼ばれるのは、プログラムの実行開始後に発生するエラーだからです。
構文的に正しくても実行時に失敗するケース
プログラムが構文的には完全に正しく、構文エラーが一切発生しない場合でも、実行を開始した後になってエラーが表示されることがあります。これがランタイムエラーです。
例えば、次のコードを見てみましょう。ユーザーから入力を受け取り、2つの値を掛け合わせるシンプルなプログラムです。
a = input('数字を入力してください:')
b = input('数字を入力してください:')
c = a * b
print(c)
input()関数は、入力された値を常に文字列として受け取ります。そのため、文字列同士を掛け合わせようとした時点で、実行時にTypeErrorが発生してしまいます。
コードの修正方法
この問題は、入力値をint()関数で整数に変換することで解決できます。
a = int(input('数字を入力してください:'))
b = int(input('数字を入力してください:'))
c = a * b
print(c)
修正後の実行結果は以下の通りです。
数字を入力してください:7 数字を入力してください:8 56
このように、構文上は問題のないコードでも、データ型の扱いを誤ると実行時にエラーが発生します。ランタイムエラーを防ぐには、適切な型変換を行うことや、try-exceptによる例外処理を組み込むことが重要です。
-
Pythonのデフォルト引数とは?基本的な使い方をサンプルコードで解説
Pythonでは、関数の引数にデフォルト値(初期値)を設定できます。関数を呼び出す際にその引数が省略された場合、自動的にデフォルト値が適用される仕組みです。 デフォルト引数の基本 Pythonは、関数引数の構文やデフォルト値の扱い方において、他のプログラミング言語とは少し異なる独自のアプローチを採用しています。デフォルト値とは、関数呼び出し時に引数の値が渡されなかった場合に、その引数が取る値のことです。 デフォルト値は、代入演算子(=)を使って設定します。以下がデフォルト引数の典型的な構文です。この例では、foo パラメータに Come here! というデフォルト値が設定されています。 de
-
Pythonの関数属性とは?getattr・setattrを使った属性の設定と取得方法を解説
Pythonでは「すべてがオブジェクト」という設計思想のもと、ほぼすべてのデータに属性やメソッドが備わっています。実は関数もオブジェクトであり、他のオブジェクトと同じように属性(アトリビュート)を持つことができます。すべての関数には、組み込み属性として __doc__ が用意されています。これは関数のソースコード内に定義されたドキュメント文字列(docstring)を返す属性です。さらに、Pythonでは既存の属性を参照するだけでなく、関数に対して新しい属性を自由に追加し、後からその値を取得することも可能です。属性を操作するための組み込み関数:getattr と setattr属性の扱いには、