Pythonを真面目にゆっくり学ぶべく
を参考に学んでいきます*1。
4. Pyの皮:コード構造
4.11 名前の中のアンダースコア
先頭および末尾の双方が__(アンダースコア2個)であるような名前はが使う変数として予め予約されている。たとえば____および____がある。
#################### ### __を含む名前 ### #################### def function(): '''docstring''' print('この関数の名前:',function.__name__) print('docstring:',function.__doc__) function()
4.12 エラー処理とtry, except
は基本的に関数の戻り値がエラーである場合、例外を返す。
例外が起きそうな場所にはすべて例外処理を追加しユーザーに何が起こるのかを知らせるのがとされている。プログラム内で独自の例外ハンドラを用意できていない場合、はエラーメッセージとエラー発生個所に関する情報を出力しプログラムを強制終了する。
########################## ### Pythonにおける例外 ### ########################## # たとえばエラーを起こすもの short_list = [1,2,3] position = 5 print(short_list[position])
エラー発生が分かっているのであれば、たとえばで例外処理を行う。
########################## ### Pythonにおける例外 ### ########################## # エラー発生が分かっているのであれば、try, exceptで例外処理 try: short_list[position] except: print('Position must be between 0 and ',len(short_list)-1,' but got ', position)
### 例外の詳細情報を明記したい場合 # except exceptiontype as name short_list = [1,2,3] while True: value = input('Position [q to quit]? ') if value == 'q': break try: position = int(value) print(short_list[position]) except IndexError as err: print('Bad index:',position) except Exception as other: print('Something else broke:', other)
4.12 独自例外の作成
前節で導入した例外は標準ライブラリで定義済みのものを用いた。ここでは例外型を自分で定義する。例外はクラスであり、で定義する。
########################## ### 独自の例外型を定義 ### ########################## # 大文字(upper)だと例外 class UppercaseException(Exception): pass words = ['eeenie', 'meenie', 'miny', 'MO'] for word in words: if word.isupper(): raise UppercaseException(word)
*1:第2版が出ているものの初版しか持っていないのでこちらで。