このBlogは移転しました。今後は aish.dev を御覧ください。

python

Pythonで学ぶ「詳解 UNIXプログラミング」(その1) 第1章 概論

1.1 ディレクトリ内の全てのファイルをリストする import sys, os if len(sys.argv) != 2: sys.exit("a single argument (the directory name) is required") try: filenames = os.listdir(sys.argv[1]) except OSError: sys.exit("can't open {0}".format(s…

Pythonで学ぶ「詳解 UNIXプログラミング」(その0)

お勧めのUNIXプログラミングの入門書は?と聞かれれば誰もが挙げるであろう名著 W.リチャード スティーヴンスの詳解 UNIXプログラミング(APUE)。必読書と言っても良いだろう。"Pythonで学ぶ「詳解 UNIXプログラミング」"シリーズのエントリでは、私自身の復…

【お詫びして訂正】Pythonの粗大ゴミ

昨夜、Pythonの粗大ゴミというエントリを書いたが、このエントリを公開し、風呂に入ってさて寝ようとした時、ふと気になったことがあった。try-finally付きのジェネレータがgcで解放されないのなら、withブロックも一緒ではないだろうか?あの記事は昔ジェネ…

あなたの知らないPythonのひみつ

Pythonでは、ループ・try・withブロックは最大20までしかネストできない。 >>> def spam(): ... while 1: ... while 2: ... while 3: ... while 4: ... while 5: ... while 6: ... while 7: ... while 8: ... while 9: ... while 10: ... while 11: ... whil…

Pythonの粗大ゴミ

なんかgcネタが続いてしまうが、先日のPython Hack-a-thon で発表した中で、「ジェネレータオブジェクトが解放されない場合がある」というのは、あまり知られていないようだ。Python公式ドキュメントを確認してみると、どうやらこちらにも書かれていない。知…

Re:Re: Pythonのガベージコレクタは「マーク&スイープ」

おお、ガベージコレクションのアルゴリズムと実装 の著者様からコメントが。補足ありがとうございます。私は別にGC全般に詳しいわけでもなんでもないのですが、どうやら大嘘を書いてるということもなさそうな感じなので安心しましたw。 これは「参照カウン…

Pythonのガベージコレクタは「マーク&スイープ」?

昨日公開した Pythonのガベージコレクション にこんな突っ込みをいただいた。 マークアンドスイープGCじゃないそうです PythonのGarbageCollection http://www.narihiro.info/translate/garbage_collection_for_python_jp.html 確かに、Pythonで使用している…

Pythonのガベージコレクション

Python Hack-a-thon 2011/2/19 の発表資料PythonのガベージコレクションView more presentations from atsuoishimoto.

Pythonで正しく日本語を eval する

@atsuoishimoto s = eval(compile(u"""'あいう'""")) すると、 s はWindowsでもUTF-8でエンコードされた文字列になっちゃうんですよ。2011-02-15 08:26:31 via TweetDeck to @atsuoishimoto これはしたり!ちっとも気がつかなかった!普通のアプリ書いてると…

Pythonの型と二つのクラス、そしてインスタンス

Python Hack-a-thon 2011.02 のLTで使う資料を書いていてふと思い出したのが、Pythonでは厳密に言えば「クラスから生成したオブジェクト」を一言で表現する用語が無いのでめんどくさい、という話である。C++などでは「インスタンス」と言ってしまえばお仕舞…

音声読み上げTwitterクライアントできた

追記: 音声読み上げTwitterクライアントはWindows用アプリとして公開しました。http://d.hatena.ne.jp/atsuoishimoto/20110421/1303312754 をご参照ください。 先日の PyCon mini JP で見た スクリーンリーダNVDA のデモが非常に印象的だったので、ちょっと…

Python mini JP に行ってきた

昨日は PyCon mini JP が開催され、実に楽しい一日を過ごすとこができた。とはいえ、私は基調講演という大役を仰せつかっており、自分の出番が終わるまでは楽しむどころでは無かったが。この時使用した私のスライドはこちら:Slide at PyCon mini JP on 2011…

Pythonの特殊メソッド

Python関連のブログやTwitterでの発言を見ていると、ときどき obj() は obj.__call__() のシンタックスシュガー とか、 len(obj) は、 obj.__len__() と同じ というような発言を見かけるとこがある。本当だろうか? obj() は obj.__call__() のシンタックス…

Pythonの進化を支えるもの

プログラム言語 Python はまもなくリリース以来20年を迎え、現在では世界でもっともよく使われている言語の一つへと成長しました。Python はすばらしいプログラム言語ですが、プログラム言語が広く普及するためには、単に優れた言語であるというだけでは不十…

Pythonでデータ定義行のファイル名と行番号を手に入れる

ふと思いついたので書いておく。Pythonでデータ定義行のファイル名と行番号を手に入れる - 清水川Web では、Pythonでデータの定義位置を記録する方法として、データ生成用の関数を作ってその中でデータの定義位置を記録する方式が提案されている。このように…

Cython 演習問題 解説

Cython 演習問題 演習1 素数判定 整数の簡単な演算を中心とした処理だが、このような処理を拡張モジュール化する場合の効果を確認してみよう。まず、演習1-(A)のスクリプトをそのままCythonを使用して拡張モジュール化した場合では、 # Python版 $python -…

Cython 演習問題

演習1 - 素数判定 (A) 以下のPythonスクリプトを作成し、 primes(1000) の実行に必要な処理時間を測定せよ。 def primes(kmax): p = [0] * kmax result = [] k = 0 n = 2 while k < kmax: i = 0 while i < k and n % p[i] <> 0: i = i + 1 if i == k: p[k] =…

Python3.1の Unicode ファイル名

パソコンを使う人なら誰でも"ファイル名"というのを知ってるし、プログラマなら誰でもファイル名を使ったファイル操作は基礎として学んでいる。しかし、21世紀の今日ですら、時としてファイル名とはやっかいな問題となりうるのだ。Python3では、文字列オブジ…

クロージャのひみつ

やっとPythonのクロージャの仕組みを少しは理解した件 で、清水川先生がクロージャを返すとき実行中のフレームオブジェクトが保存されるのか?という疑問を呈されている。結論から言うと、フレームオブジェクトは保存されず、クロージャが必要とするオブジェ…

亡きオウムに捧げる50の言葉

文字列定数 'Dead Parrot' '''Dead Parrot''' r'''Dead Parrot''' "Dead Parrot" """Dead Parrot""" r"""Dead Parrot""" "Dead" " " "Parrot" "Dead \ Parrot" "Dead" \ " " \ "Parrot" "\x44\x65\x61\x64\x20\x50\x61\x72\x72\x6f\x74" "\104\145\141\144\4…

The Zen of Python 解題 - 後編

The Zen of Python 解題 - 前編 "The Zen of Python" の役割 "The Zen of Python" は Tim Peters氏が1999年に「Pythonらしさとはなにか?」と問われて書き上げたものであることは前述した。Python 2.0 のリリースに向けて活発に開発が進められていたころであ…

The Zen of Python 解題 - 前編

The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability count…

pyjf - python library for Japanese language

日本語エンコーディング変換ライブラリ pykf も開発以来10年を超え、さすがにいろいろと古くなってきた。ぼちぼち大幅に手を入れようかと検討してみると、どうも原型がなくなるぐらい修正が入りそうな気配。それでは、ということで pykf はそのままにして、…

スタティックメソッドは要らない子? - その2

http://d.hatena.ne.jp/atsuoishimoto/20100807/1281169026 を書いたあとに、スタティックメソッドの使い道を思いついた。やや人工的なシチュエーションではあるが…こんなコードを考えてみよう def _callexit(): sys.exit() class Foo(object): shutdown = _…

スタティックメソッドは要らない子?

Pythonでは、クラス内で定義することの出来るメソッドが三種類用意されている。メソッド・クラスメソッド・スタティックメソッドの3種類だ。それぞれどんな特徴を持っているのだろうか? メソッド まず、メソッドはおなじみのインスタンスメソッドで、第一引…

Python Hack-a-thon 2010.07 のスライド

String representation in py3kView more presentations from atsuoishimoto.

Pyrex 0.9.9の変更点

先日 Python拡張モジュール開発言語 Pyrex の 0.9.9がリリースされたが、このバージョンでは旧バージョンとは非互換となる変更が加えられており、注意が必要である。 例外処理の変更 Pyrex 0.9.9では、発生した例外が実行中のスレッドに保存されなくなり、sy…

pykfをPyPIに登録

Python用日本語エンコーディング変換モジュール pykf の setuptools 対応を行い、PyPI にアップロードした。これからは easy_install pykfで利用可能なので、機会があればご利用ください。

Python高速化テクニック

ここ2〜3日、InfoPileのパフォーマンスチューニングをしており、ちょっともたつきを感じるような部分をほとんど解消することができた。InfoPileで使用した高速化テクニックの中で効果が大きく、よくつかわれそうなものを紹介しよう。尚、以下のスクリプト…

Python用 オブジェクトシリアライザ 「しば漬け」

https://code.launchpad.net/~aishimoto/+junk/shibazukemethaneさんのmsgpack用ベンチマークを拝借すると、こんな感じ。 == Integer == = Size = pickle: 6203398 [bytes] json: 5154816 [bytes] shibazuke: 3001355 [bytes] pickle_dump 294.900[ms] pickl…