python
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…
お勧めのUNIXプログラミングの入門書は?と聞かれれば誰もが挙げるであろう名著 W.リチャード スティーヴンスの詳解 UNIXプログラミング(APUE)。必読書と言っても良いだろう。"Pythonで学ぶ「詳解 UNIXプログラミング」"シリーズのエントリでは、私自身の復…
昨夜、Pythonの粗大ゴミというエントリを書いたが、このエントリを公開し、風呂に入ってさて寝ようとした時、ふと気になったことがあった。try-finally付きのジェネレータがgcで解放されないのなら、withブロックも一緒ではないだろうか?あの記事は昔ジェネ…
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…
なんかgcネタが続いてしまうが、先日のPython Hack-a-thon で発表した中で、「ジェネレータオブジェクトが解放されない場合がある」というのは、あまり知られていないようだ。Python公式ドキュメントを確認してみると、どうやらこちらにも書かれていない。知…
おお、ガベージコレクションのアルゴリズムと実装 の著者様からコメントが。補足ありがとうございます。私は別にGC全般に詳しいわけでもなんでもないのですが、どうやら大嘘を書いてるということもなさそうな感じなので安心しましたw。 これは「参照カウン…
昨日公開した Pythonのガベージコレクション にこんな突っ込みをいただいた。 マークアンドスイープGCじゃないそうです PythonのGarbageCollection http://www.narihiro.info/translate/garbage_collection_for_python_jp.html 確かに、Pythonで使用している…
Python Hack-a-thon 2011/2/19 の発表資料PythonのガベージコレクションView more presentations from atsuoishimoto.
@atsuoishimoto s = eval(compile(u"""'あいう'""")) すると、 s はWindowsでもUTF-8でエンコードされた文字列になっちゃうんですよ。2011-02-15 08:26:31 via TweetDeck to @atsuoishimoto これはしたり!ちっとも気がつかなかった!普通のアプリ書いてると…
Python Hack-a-thon 2011.02 のLTで使う資料を書いていてふと思い出したのが、Pythonでは厳密に言えば「クラスから生成したオブジェクト」を一言で表現する用語が無いのでめんどくさい、という話である。C++などでは「インスタンス」と言ってしまえばお仕舞…
追記: 音声読み上げTwitterクライアントはWindows用アプリとして公開しました。http://d.hatena.ne.jp/atsuoishimoto/20110421/1303312754 をご参照ください。 先日の PyCon mini JP で見た スクリーンリーダNVDA のデモが非常に印象的だったので、ちょっと…
昨日は PyCon mini JP が開催され、実に楽しい一日を過ごすとこができた。とはいえ、私は基調講演という大役を仰せつかっており、自分の出番が終わるまでは楽しむどころでは無かったが。この時使用した私のスライドはこちら:Slide at PyCon mini JP on 2011…
Python関連のブログやTwitterでの発言を見ていると、ときどき obj() は obj.__call__() のシンタックスシュガー とか、 len(obj) は、 obj.__len__() と同じ というような発言を見かけるとこがある。本当だろうか? obj() は obj.__call__() のシンタックス…
プログラム言語 Python はまもなくリリース以来20年を迎え、現在では世界でもっともよく使われている言語の一つへと成長しました。Python はすばらしいプログラム言語ですが、プログラム言語が広く普及するためには、単に優れた言語であるというだけでは不十…
ふと思いついたので書いておく。Pythonでデータ定義行のファイル名と行番号を手に入れる - 清水川Web では、Pythonでデータの定義位置を記録する方法として、データ生成用の関数を作ってその中でデータの定義位置を記録する方式が提案されている。このように…
Cython 演習問題 演習1 素数判定 整数の簡単な演算を中心とした処理だが、このような処理を拡張モジュール化する場合の効果を確認してみよう。まず、演習1-(A)のスクリプトをそのままCythonを使用して拡張モジュール化した場合では、 # Python版 $python -…
演習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] =…
パソコンを使う人なら誰でも"ファイル名"というのを知ってるし、プログラマなら誰でもファイル名を使ったファイル操作は基礎として学んでいる。しかし、21世紀の今日ですら、時としてファイル名とはやっかいな問題となりうるのだ。Python3では、文字列オブジ…
やっとPythonのクロージャの仕組みを少しは理解した件 で、清水川先生がクロージャを返すとき実行中のフレームオブジェクトが保存されるのか?という疑問を呈されている。結論から言うと、フレームオブジェクトは保存されず、クロージャが必要とするオブジェ…
文字列定数 '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" は Tim Peters氏が1999年に「Pythonらしさとはなにか?」と問われて書き上げたものであることは前述した。Python 2.0 のリリースに向けて活発に開発が進められていたころであ…
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…
日本語エンコーディング変換ライブラリ pykf も開発以来10年を超え、さすがにいろいろと古くなってきた。ぼちぼち大幅に手を入れようかと検討してみると、どうも原型がなくなるぐらい修正が入りそうな気配。それでは、ということで pykf はそのままにして、…
http://d.hatena.ne.jp/atsuoishimoto/20100807/1281169026 を書いたあとに、スタティックメソッドの使い道を思いついた。やや人工的なシチュエーションではあるが…こんなコードを考えてみよう def _callexit(): sys.exit() class Foo(object): shutdown = _…
Pythonでは、クラス内で定義することの出来るメソッドが三種類用意されている。メソッド・クラスメソッド・スタティックメソッドの3種類だ。それぞれどんな特徴を持っているのだろうか? メソッド まず、メソッドはおなじみのインスタンスメソッドで、第一引…
String representation in py3kView more presentations from atsuoishimoto.
先日 Python拡張モジュール開発言語 Pyrex の 0.9.9がリリースされたが、このバージョンでは旧バージョンとは非互換となる変更が加えられており、注意が必要である。 例外処理の変更 Pyrex 0.9.9では、発生した例外が実行中のスレッドに保存されなくなり、sy…
Python用日本語エンコーディング変換モジュール pykf の setuptools 対応を行い、PyPI にアップロードした。これからは easy_install pykfで利用可能なので、機会があればご利用ください。
ここ2〜3日、InfoPileのパフォーマンスチューニングをしており、ちょっともたつきを感じるような部分をほとんど解消することができた。InfoPileで使用した高速化テクニックの中で効果が大きく、よくつかわれそうなものを紹介しよう。尚、以下のスクリプト…
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…