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.