ちゃぱブログ / エンジニアリング / マネジメント

とあるプロダクトの運用組織のマネジメントしてる人の雑記。主にエンジニアリングやマネジメントのことを書きます。ときおりプチ情報も

入門Python3 第二版(読んでない段階での予告編)

Pythonを初めて学ぼうとしたときに、いくつか入門書があったのだけど、「漢たるものオライリーだ」という謎の理由で購入した「入門Python3」。

なんだかんだで、今でも基本的なことをど忘れしたときには開く。 その「入門Python3」の第二版。その名も「入門Python3 第2版」が発売された。

第一版も600ページとなかなかのボリュームだったのだけど、第二版はさらに充実して800ページ。ちょっとした鈍器になるボリューム。 第一版にお世話になった(ている)身としては、第二版も買おうかと思ったりするのだけど、厚い。悩ましい。

第一版がPython3.3(3.4)時代なので、第二版で対応したPython3.9では大きく進化がある。改めて読み直しても良いのかもしれない。が、厚い。

Python3.3 → 3.9で増えた内容

Wikipediaより抜粋。

自分の感覚だと、非同期系、f文字列、型ヒント、データクラス、あたりがパッと気にかかるポイント。第二版でこれらが充実していると嬉しい。手にとって見てみたいなぁ。やっぱり買うかなぁ。

3.4

  • オブジェクト指向ファイルシステムパスを提供する「pathlib」モジュールの提供
  • 列挙型を扱うためのenumモジュールの標準化
  • 統計関数を提供するstatisticsモジュールの導入
  • Pythonが割り当てたメモリブロックを追跡するためのデバッグツールのtracemallocモジュールの導入
  • 非同期I/Oを扱うためのフレームワークとなるasyncioモジュールの導入
  • Pythonの組み込み関数に関する分析情報を得るため機構の実装

3.5

  • zipアプリケーションサポートの改良
  • byte/bytearrayオブジェクトのための「%」フォーマット対応の追加
  • 行列乗算演算子@の導入
  • 高速ディレクトリトラバーサル機能os.scandir()の導入
  • 割込がかかったシステムコールのオートリトライ機能追加
  • 近似値であるかどうかをテストする機能の導入
  • .pyoファイルの削除
  • 拡張モジュールをロードするための新しい仕組みの導入

3.6

  • 文字列中に式を埋め込める「Formatted string literals」の導入
  • 変数に対して型に関する情報(型ヒント)を与える「Syntax for variable annotations」の導入
  • 「async」および「await」文法 (async/await)でコルーチンを利用可能にする「Asynchronous generators」の導入
  • 標準ライブラリにsecretsモジュールを追加
  • DTraceおよびSystemTapプローブのサポートを追加

3.7

  • 使用時点では宣言されていない型を使った型アノーテーション表記が可能となる
  • レガシーな C ロケールの抑圧、強制 UTF-8 実行モード
  • breakpoint() 関数の追加
  • dict の挿入順の保存
  • ナノ秒 (10-9 s) 単位の分解能を持つ新しい時間関数の追加
  • コンテキスト変数
  • データクラス

3.8

  • 代入式 :=
  • 位置のみのパラメータ
  • f文字列で f'{expr=}' の形式のサポート
  • pickle プロトコル5
  • dict での reversed のサポート

※3.9の追加分がまだまとめられていなかった・・・

寺田さんが以前にPodcastで3.9の変更点について語っていたので、参考にリンクを貼っておきます。

anchor.fm