ThinkStats (7)

備忘シリーズ。酔っ払い状態でコードを読みます。これは演習問題 1-3 なソレなのかな。定義を順に確認してみます。
とりあえず kickoff なソレが以下な部分。

def main(name, data_dir='.'):
    Summarize(data_dir)
    

if __name__ == '__main__':
    import sys
    main(*sys.argv)

Summarize 手続き。直上で定義されてます。コメント的には以下。

    """Prints summary statistics for first babies and others.
    
    Returns:
        tuple of Tables
    """

MakeTables という手続きで引数な data_dir (デフォは '.') を渡しています。

    table, firsts, others = MakeTables(data_dir)

MakeTables な手続きなんですが、以下でデータを読み込んで

def MakeTables(data_dir='.'):
    """Reads survey data and returns tables for first babies and others."""
    table = survey.Pregnancies()
    table.ReadRecords(data_dir)

PartitionRecords という手続きを呼び出しておられます。

    firsts, others = PartitionRecords(table)

ここで呼び出しているのが以下。

def PartitionRecords(table):
    """Divides records into two lists: first babies and others.

    Only live births are included

    Args:
        table: pregnancy Table
    """
    firsts = survey.Pregnancies()
    others = survey.Pregnancies()

あ、ここは自分てきには以下がアレなのか。

first_p = []
other_p = []

で、以下。ここの記述も興味深い。

    for p in table.records:
        # skip non-live births
        if p.outcome != 1:
            continue

        if p.birthord == 1:
            firsts.AddRecord(p)
        else:
            others.AddRecord(p)

AddRecord というメソドは基本的に append してるのみ。ヤッてることは簡単なんだけどモジュール化って観点でとても面白い作りになってるのでもう少しマトモな頭でぺろぺろした方が良さげ。
ってことで明日の朝練で (ry