Python Code Reading 07 行って参りました。

Python Code Reading 07 に参加してきました。
2009/01/23 19:00〜 Sun Microsystems用賀セミナールーム にて


今回の内容は、3.0, 2.6でPythonに導入された機能についてです。
ただし、全てのテーマを扱うのは無理なので、今回のテーマは

  • io
  • decimal

に絞った話になりました。講師は noriさんです。

また、アプリケーションをpythonのバージョンアップに対応させる作業がはじまるお・・

immutable

変更不可能オブジェクト。
Hashのキーにすると大きな影響がでるらしい。

後で試す。何か、都合の悪いことが起きることだけ覚えておく。

Abstract Base Classes

新しくメソッドが導入された。

__isinstance
__issubclass

クラスの継承関係、同一性を保証するのは紳士協定。
サブクラスの作り手側が対応する。

例外

python 3.0からraiseにインスタンスを指定して、raise exceptionができるようになった。
例外が連続して起きた場合に、前の例外も追跡可能にもなった。(らしい)

bytes

bytesは、C言語のchar配列相当。
いくつかのAPIが、このbytesを使用するように変更された。

bytesはこれから、あちこちで多用されそうだ。


ソースコード上では、bを使うと、リテラルをバイト配列として宣言できる。

val = b'バイト列'

bytes is mutable ? or immutable ?

mutableなbytes としては bytearray が用意されている。

拡張された文字列フォーマッタ

同時に数字と名前のキーをとれるように。
他、いろいろ。

"The story of {0}, {1}, and {c}".format(a, b c=d)


名前付きだけのフォーマッタだけあれば、十分ではないか?

io.pyのソースコード追跡

難しい。難しくて全然わからん。いや、冷静になれば読めるけど。

decimal.py

同じくコード読解。ちょっと話の流れを追いづらかった。


decimalは、下の例のように、丸め誤差の発生に困る場合などで使用する。

python
Python 2.5.1 (r251:54863, Nov 11 2008, 17:46:48) 
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> 10.2
10.199999999999999
>>>



pythonは、ソースコードの上の方に、クラスの使い方が書いてあるし、
テストコードも入っているから、ライブラリの使い方がわかりやすく良いですね。

感想

後半、コードの読解を始めたあたりは、少し追えませんでした。
後ろに座ってたのと、目が疲れていたので、画面のコードを視認しづらかったのが敗因です。
不覚。


あと、Python Code Readingは 19:00?21:00だから、そこから店に移動すると、懇親会は早くて21:30開始。
それだと、全く長居できないので、今回は懇親会への参加を断念した。それも残念なことのひとつ。
やはり、そろそろ引っ越すべきか。