What’s New In Python 3.2 ノート¶
What’s New In Python 3.2 を読んで、個人的に関心のある項目に注釈を付けていく。
新規機能¶
format()
系の#
が浮動小数点数、複素数、Decimal
も対象とするようになった。In [46]: format(12345.6789, '#5.0f') Out[46]: '12346.' In [47]: format(12345.6789, '5.0f') Out[47]: '12346'
hasattr()
はAttributeError
しか握りつぶさないように変更された。Python 起動時の
-q
オプションの追加。コピーライトとバージョンを表示させないフラグだ。ResourceWarning
という例外が追加された。これはデフォルトで無効になっているが、有効化するとオブジェクトの各種リソースの解放が不適切なときに発見できるかもしれない。range
の返すオブジェクトに対してlist
のようにcount()
やindex()
を呼び出せるようになった。スライスが可能になった。
負の添字が指定可能になった。
Python 3.0 で廃止されたはずの
callable()
が復活した。パスに非 ASCII 文字が含まれているときでもモジュールを
import
できるようになった。
標準ライブラリー¶
新規モジュール¶
argparse
追加。コマンドライン解析機能は頻繁に利用するので承知している。concurrent.futures
追加。ThreadPoolExecutor
やProcessPoolExecutor
を使って並行処理ができるというもの。I/O bound なのか CPU bound なのかで使い分けるのだろう。並行処理につき常にデッドロックに注意。
ドキュメントの例でタイムアウトを指定したりして挙動を確かめるといい。
html.escape
がモジュールごと追加。この関数の実装を見たほうが話が早い。昔 Perl で掲示板スクリプトを書いたときに、投稿内容のテキストに含まれる HTML タグを無効化するアレだ。
変更モジュール¶
全般
メール周りの機能がメッセージをまともに処理できるようになった。
with A as B
文が使えるような要素が新規に追加された。具体的に何かは知らない。
abc
に@abstractclassmethod
,@abstractstaticmethod
追加。ただし次の Python 3.3 で非推奨の憂き目にあう。
array
: 使っていないとは思うがarray.tostring()
とarray.fromstring()
がそれぞれarray.tobytes()
とarray.frombytes()
に名称変更した。collections.Counter
に-=
とsubtract()
が追加。configparser
:SafeConfigParser
がConfigParser
に取って代わった。contextlib.contextmanager
: 要研究。functools
lru_cache
という関数呼び出しをキャッシュするデコレーターが追加された。これは明らかに便利そうだ。wraps
デコレーターは入れ子の関数を作るときに採用したい。
itertools.accumulate()
が追加。logging
config
の構成方法が増えた。basicConfig
にstyle
の追加。これで文字列の書式を旧式の%
ではなく Python 3.X 式のformat
を使うことができる。
math
isfinite()
追加。数がmath.nan
かmath.inf
であれば真である。expm1()
追加。桁落ちを避けるための関数であり、ゼロ近傍の値に対して利用する。gamma()
追加。複素数は指定できないようだ。
pdb
.pdbrc
に書ける項目が増えた。デバッグコマンドが多数追加。
random
各種一様分布乱数生成関数の品質が良くなった。site
一度使ってみよう。sysconfig
一度使ってみよう。unittest
かなり多い。python -m unittest
の実行時にファイルパスを指定できるようになった。assertWarns()
系追加。with A as B
文で使い、警告が送出されることをassert
する。assertCountEqual()
追加。引数同士の要素が重複を込めて一致することをassert
する。maxDiff
追加。テスト失敗時の差分テキストの出力量を制御する。多数
assert
系の名前変更や非推奨扱い。これは公式文書などの信頼できる情報元に当たっていちいち確認して欲しい。
xml.etree.ElementTree
パッケージのアップグレード。