22章癇癪持ち――契約による設計Tantrum
制約
- すべての手続きと関数は、引数の正当性を確認し、不当な場合は停止する。
- すべてのコードブロックは、考え得るすべてのエラーを確認し、エラーが発生した場合には固有のメッセージをログに記録し、エラーを呼び出し元に返す。
プログラム
1 #!/usr/bin/env python 2 3 import sys, re, operator, string, traceback 4 5 # 6 # 関数定義 7 # 8 def extract_words(path_to_file): 9 assert(type(path_to_file) is str), "I need a string!" 10 assert(path_to_file), "I need a non-empty string!" 11 12 try: 13 with open(path_to_file) as f: 14 str_data = f.read() 15 except IOError as e: 16 print(f"I/O error({e.errno}) when opening {path_to_file}: {e.strerror}! I quit!") 17 raise e 18 19 pattern = re.compile(r'[\W_]+') 20 word_list = pattern.sub(' ', str_data).lower().split() ...
Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.