マニュアル: Python

投稿日: 更新日:

基本構文

  • 文字列型: 3.1.2. 文字列型 (string)
    • シングルクォート(')とダブルクォート(")で機能的な違いはない
  • 辞書型: 5.5. 辞書型 (dictionary)
    • {'jack': 4098, 'sape': 4139}のように書く(JSONっぽい)
    • キーはほぼ任意の型が使える
    • 値の取得: d[key]
    • list(d): キーのリスト(挿入順)
    • sorted(d): キーのリスト(ソート済み)
    • key in d: キーが辞書に含まれているか
    • key not in d: キーが辞書に含まれていないか
    • 作成方法はリンク先参照
  • 条件式(三項演算子): 6.12. 条件式 (Conditional Expressions)
    • x if C else y という形式。独特で分かりづらい。
  • 内包表記

条件式、内包表記の覚え方

まだ習いたてなのでこれで合っているかどうかは分からん。

  • 条件式: x if C else y
  • 内包表記(リスト): [x**2 for x in range(10)]
  • 内包表記(辞書): {x: x**2 for x in (2, 4, 6)}

以下のような特徴があるかなと。

条件式は「一番知りたい」のがtrueのときの値でこれが左に来ている。 Rubyなら if C then x else y end となるが、 一番知りたいxが左に来て、then, endを削除するとx if C else y になる。

リストは「一番知りたい」のが各リストの計算式で、これが左に来ている。 残りはループの条件で for x in range(10) 。これはbashやJavaScriptなどで使われる構文なので違和感はない。 最後にリストなので [] で囲めばOK。

辞書は値がリストの構文と同じで、あとは辞書らしく x: でキーを指定して、 {} で囲む。

コーディング規約(PEP 8)

気になったところから少しずつまとめていきます。

  • インデント: スペース4つ。タブは禁止(Python 3)
  • 1行79文字以下
    • 標準ライブラリでは必須だが、実際には守られない(プロジェクトでこの条件を外す)ことが多い模様。
  • 関数やクラスの定義の前には改行が2つ必要。

@とは

デコレータに使われる記号。

ざっくり読んだ感じだと、デコレータパターンやJavaのアノテーションと近いっぽいけど同じではない感じですね。