Python2とその時代

このエ
    ントリーをはてなブックマークに追加

宣伝が続いて恐縮だが、オライリージャパンよりPythonの解説書を上梓した。昔から、Python内部の仕組みも解説したPython解説書を書きたいと思っていて、ようやく実現した感じだ。

しかし、本書の執筆は、昔、構想を立てていたときに思っていたほどは楽しくはなかった。Python2ではなく、Python3.3以降を対象に書いてしまったからだ。Python3の型システムは綺麗に整理されてしまったし、メタクラスも扱いやすくなった。メモリアロケータは改善され、ガベージコレクションの注意点も大幅に減った。Unicodeの暗黙の変換も無くなった。私が書こうと思っていた知識の多くは、Python3では無用の長物と化した。

本書をPython2向けに書いていたら、今よりずっと多くのページ数を費やしただろう。Python3は、Python2よりも落とし穴が少なく、学習も容易なプログラミング言語だ。

そんな優れたPython3だが、「普及してないじゃないか」という声が上がっているようだ。以下、その件に関する感想を書いておく。

Python3は普及してない ...

続きを表示 ...

View comments.


書籍 Python文法詳解 (※表紙は犬ではありません)

このエ
    ントリーをはてなブックマークに追加

このたび、オライリージャパンよりPythonの解説書を出版させて頂くこととなった。表紙絵の動物は、犬ではなくアルプス・マーモットだ。

長年のあいだ、オライリージャパンの某氏にはPython本を書け書けとせっつかれていて、そのたびにうーんむにゃむにゃと誤魔化していたが、ついに書いたった。古い借金を返したようで、スッキリした。慶賀のいたりだ。

この本はPython3言語の解説書で、本人としては、プログラミング経験のある人なら読めるように、というつもりで書いている。Pythonの歴史から入って簡単なチュートリアルに進む、という正統派ストロングスタイルのプログラミング解説書だ。

しかし、本書を読むだけでは、Pythonプログラミングはマスターできない。Python3言語の文法とリストなど基礎的な組み込みオブジェクト、Pythonの実行モデルなどを中心に解説しており、Pythonの標準ライブラリについてはほとんど解説していないからだ。この決断のおかげで、本書は1000ページを超えるような電話帳まがいの本になることを回避できた。

しかし、その分、Pythonの式や構文についてはしっかリ解説できたと思っている。Pythonの名前空間やガベージコレクションなど ...

続きを表示 ...

View comments.


Python 3.4 で追加されたモジュールのPyPIパッケージ

このエ
    ントリーをはてなブックマークに追加

Python 3.4の新規モジュール で、Python3.3以前用のパッケージが用意されているモジュールの一覧。

モジュール名 対象バージョン URL
enum 2.4 〜 3.3 https://pypi.python.org/pypi/enum34
asyncio 3.3 〜 https://pypi.python.org/pypi/asyncio
pathlib ...
続きを表示 ...

View comments.


Python 3のexcept文

このエ
    ントリーをはてなブックマークに追加

Python3で例外をキャッチすると、例外オブジェクトを代入した変数は削除される

>>> a =100
>>> a
100
>>> try:
...     1/0
... except Exception as a:
...     pass
...
>>> a
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'a' is ...
続きを表示 ...

View comments.


Python 3.4 のオブジェクト開放処理

このエ
    ントリーをはてなブックマークに追加

Python Advent Calendar 2013 の六日目です。Python3.4 で導入された PEP 442 -- Safe object finalization の解説を簡単に。

Pythonのメモリ解放処理

Pythonでは、処理中に使われなくなったオブジェクトを検出し、自動的に開放するようになっている。他のオブジェクトから全く参照されておらず、Pythonインタープリタからアクセスできなくなってしまっているオブジェクトは、不要なオブジェクトとして削除される。

例えば、

>>> class Spam:
...     pass
...
>>>
>>> obj = Spam()
>>> obj = None

では ...

続きを表示 ...

View comments.


Kaa - console text editor

このエ
    ントリーをはてなブックマークに追加

Ubuntu 13.10 にVMWare Tools をインストールした時のメモ

このエ
    ントリーをはてなブックマークに追加

Ubuntu 13.10 で普通にVMWare Fusion 6 の VMWare Tools をインストールしようとすると、

/vmhgfs-only/inode.c:1893:29: error: ‘struct dentry’ has no member named ‘d_count’
          int dcount = dentry->d_count;

こんな感じでエラーになってしまう。

こちらの記事 を参考に ...

続きを表示 ...

View comments.



めんどくさいmock.patch()

このエ
    ントリーをはてなブックマークに追加

unittest.mock モジュールを正しく使って関数を置き換えるというのは以外と難しいもので、Pythonの名前空間について、しっかり把握できてないとうまくいかないことがある。

単純なケースでは、テスト対象のコードが参照している名前で置き換えてやればいい。 例えば

import spam

def ham():
    spam.egg()

というモジュール Mham() をテストするために spam.egg を置き換えるなら

def test():
    import M
    with patch("spam.egg ...
続きを表示 ...

View comments.


Console IME対応パッチ

このエ
    ントリーをはてなブックマークに追加

Windows用のコマントプロンプトの置き換えアプリ Console の、IME対応パッチ版

バイナリ

2013-07-06版(Console 2.00 b148用)

https://sourceforge.net/projects/ishimoto.u/files/console2-ime/b148/

インストール方法

https ...

続きを表示 ...

View comments.