ページ

2009年5月21日

Python3に対応させたときのメモ その2

Python3に対応させたときのメモ」の続きです。主にモジュール。

今までは僕は、import hogeのように書いてform hoge import fugaのように書くことはほとんどありませんでした。でも、from hoge import fugaだと、モジュール名が変わってもクラス名や関数名が同じであればコードをそれほど変更せずに対応できるので、便利。

StringIOがモジュールだったのがioモジュールのStringIOになりました。unicodeの文字列を渡すとデフォルトではutf-8でエンコードしてバッファに書き込んでくれます。Python3で、Unicodeと8bit文字列がバイト列として分かれたと宣伝していますが、僕はunicodeとstrの暗黙の変換をutf-8でやってくれればそれでいいと思っていたので、そんなにうれしくはありません。多分、僕がCのプログラマだったからでしょう。

それから、urllibが・・・。urllibとurllib2の二つがあるのは困ったものでした。でも一つになるものめんどいですが、urllibのなかでさらにモジュールに分かれています。例外関係(と言ってもHTTPErrorぐらいですが)はurllib.errorにありました。あとはRequestクラスとurlopen、quoteがurllib.requestに移動されていますが、importさえできればあとはコードの変更なしで動くので、移動先を調べるのが一番大変かな?

それから、base64のencodestringで入力はunicodeになってしまった文字列で返値がバイト列です。バイト列はb'hoge'.decode()のようにdecodeメソッド文字列になってくれます。この辺は、Python2のころとあまり変わりません。

きっとその3に続くはず。

0 件のコメント: