鉄は熱いうちに打て
=============================
Effective Pythonで学ぶ¶
2017-12-02
Pythonの知識で足りないところを補完したいな〜と、たまにペラペラめくっていた Effective Python を真面目に読むことにしました。 その感想と新規発見したことを数日に分けて書こうと思います。たぶん、私のメモとなるでしょう。ちゃんと最後まで頑張りたいな。
はじめに¶
Effective Python は「Pythonプログラムを改良する59項目」とサブタイトルが付いていますが、 こう書いたほうがいいよね が詰まっている本です。
これを会社に入社したときにきちんと読み込んでいたら、私のコードをレビューした人の手間が大分減ったのに。と後悔しました。 過去を振り返ってもピチピチギャルには戻れないので、これから未来の為にPythonらしさ、おすすめの書き方を学んでいきます。
目次¶
目次は公開されているので、 Effective Python をみてください。
対象読者¶
本の対象としている読者は Pythonの文法は覚えたけど、どう書いていいかわからないときが結構あるなと思っている人 くらいでかなっと思います。 まず、Pythonの文法を学びたい場合は、 Python文法詳解 がわかりやすくておすすめです。
1章 Python流思考(Pythonic Thinking)¶
早速、はじめます。
項目 1:使っている Pythonのバージョンを知っておく¶
Pythonのバージョンは知っておいたほうがいいですね。
項目 2:PEP 8スタイルガイドに従う¶
PEP8に従ったほうがいいですね。(おい)
私は開発環境にPyCharmを利用しているので、勝手にPEP8に準拠していないと黄色い波線が出て警告されます。 もうカンマ打ったら、手が勝手に後ろに半角スペース打ったりしますね。 ちゃんと守っている方が読みやすいです。
このPEP8を忘れていました。
シーケンス (文字列, リスト, タプル) については、 空のシーケンスが False であることを利用しましょう。:
良い: if not seq:
if seq:
悪い: if len(seq):
if not len(seq):
結構、 len() で調べていました(汗) シーケンスが空か調べるならこんな感じですね。
somelist = []
if somelist:
print('Not empty')
else:
print('Empty')
somestring = ''
if somestring:
print('Not empty')
else:
print('Empty')
あとは大丈夫。 しかし、時々忘れるので年に1回位は振り返るのは大事ですね。 pep8-ja 1.0 ドキュメント
項目 3:bytes, str, unicodeの違いを知っておく¶
はい。
項目 4:複雑な式の代わりにヘルパー関数を書く¶
ヘルパー関数 ってなんじゃろ?と思ったんですが、「条件式が複雑になるようなら、関数を作りましょう」ということですね。
項目 5:シーケンスをどのようにスライスするか知っておく¶
項目 6:1つのスライスでは、 start, end, strideを使わない¶
スライス楽しいよね。
無理すると続かないので、こんな感じで読んでいこう。