ひさふぃの日記

DjangoとPythonとLaravelが好き。大阪でフリーランスエンジニアやってます。

入門Python3のメモ 5章|モジュール、パッケージ、プログラム

Pythonの入門書として各所でオススメされている入門Python3。

shikouno.hatenablog.com

前半7章までで基本をおさらいし、後半8章からは他分野で活用できそうなちょっとした応用編がオールインワン。みんなのPython 第4版の次に読むとちょうどいいレベル感。

購入後にかいつまんでパラパラ読みはしていたのですが、まとまった時間が取れそうだったので一気通読しようかと思い立ちました。

その際、初めて知る箇所や曖昧でいつも検索する箇所を後で見返せるようにメモしておこうかと。

そのため、このメモは僕の知識的偏りから生み出されたものであることを最初にお断りしておきます。気になった方は書籍を購入してください。

入門 Python 3

ちなみに、1章は導入なのでメモがありませんが、1.2 Pythonと多言語の比較は面白いので必見!著者の冗談も随所に入っていて、面白くていい本です。

英語版はPDFが無料で公開されています。よろしければ!

Introducing Python

辞書にキーを登録する

  • 5.5.1 setdefault()とdefaultdict()による存在しないキーの処理

setdefault()は、キーが存在しないときは値と共に辞書に追加。キーが存在するときは辞書は変更されない。

辞書に新しいキーをどんどん追加していくような場合に便利に活用できそうです。

>>> twice_table = { x : x*x for x in range(1,5)}
>>> twice_table
{1: 1, 2: 4, 3: 9, 4: 16}
>>> twice_table.setdefault(5, 25)
25
>>> twice_table
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
>>> twice_table.setdefault(3, 6)
9
>>> twice_table
{1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

defaultdict()は、キーが存在していないときのデフォルト値を引数に取った関数で設定できる。

値を0に設定できるint()や、空のシーケンスを設定できるlist()やdict()を使います。

int()を使った独自カウンタが例に出ていました。defaultdict()を使うと行数が減りますがそこまで差があるわけではないため、使わない方がコードを読めばすぐわかるのでいいような気がしないでもなかったり。

>>> import random
>>> numbers = [ random.randint(1,10) for x in range(10)]
>>> numbers
[10, 1, 8, 2, 10, 2, 9, 4, 4, 8]

>>> counter = {}
>>> for number in numbers:
...     if not number in counter:
...         counter[number] = 0
...     counter[number] += 1
...
>>> for number, count in counter.items():
...     print(number, count)
...
10 2
1 1
8 2
2 2
9 1
4 2

>>> from collections import defaultdict
>>> counter = defaultdict(int)
>>> for number in numbers:
...     counter[number] += 1
...
>>> for number, count in counter.items():
...     print(number, count)
...
10 2
1 1
8 2
2 2
9 1
4 2

さいごに

5章はあまりメモがありませんね。ページ数が少なく、日常的に使用頻度の高いものばかりで覚えていることばかりでした。

標準モジュールの章は他にも便利なモジュールがあったのですが、大まかな機能を覚えておき入り用になったときにまた参照します。

最後までお読みいただきありがとうございました。それじゃ!

入門 Python 3

入門 Python 3