python

続: クラスに対して動的にメソッドを追加する

そもそも、クラスの名前空間に関数ぶち込めば そんだけで、済むシンプルで他の言語からしたら変態な 名前空間の持ち主のpythonでは、特別に何のモジュールを 使わなくても出来る。 pythonの名前空間は変態だから - aileron.cc 違うよ、できないよ。昔試して…

setup.py を書いているときにハマったこと

Python の setup.py を書いているときに、いくら setup.py を書き換えても実行結果が全然かわらなくて、えらいハマってしまった。原因は、python setup.py sdist とかしたときに MANIFEST ファイルが生成されるんだけど、これが更新されないせいだった。 手…

PyYAML 3.06 Release

PyYAML 3.06 がリリースされた。 PyYAML は YAML の最新仕様である YAML 1.1 に準拠し、かつバグも少なく、今現在いちばんおすすめの YAML ライブラリ。 (Ruby の Syck は YAML 1.0 だからちょっと古いし、バグも多い。)なお文字列を dump するときに、PyYAM…

Matz loves Python

RubyFlowより。 Matz loves Pythonなんかスーパーマンの変身シーンみたい。 と思ったら、 ab5tract is waiting for someone to photoshop an S on Matz' chest. Matz loves Python? - RubyFlow というコメントが。つまり誰かPhotoshopでMatzの胸にスーパーマ…

Google App Engine で次にサポートされる言語を予想する

きょうのお昼にでた話題なんだけど、Google App Engine (以下 GAE) ではまず Python がサポートされた。これはなぜかって話になって、たぶん Guido (Python の作者) が Google にいるからじゃね? と言っておいた。GAE で使っている Python はたぶん素の CPyt…

Ruby vs. Python は Lisp vs. Scheme に似ている

Python の好きなとこ・嫌いなとこを書いていて、よくわかった。 Ruby vs. Python は Lisp vs. Scheme に似ていると思うんだ。 Ruby, Lisp -- 機能がリッチで仕様は複雑、変数と関数の名前空間が違う Python, Scheme -- 機能を絞っていて仕様は簡素、変数と関…

Python の好きなところ

Python の好きなところ。主に Ruby との対比。 微妙なものも混ざっているけど、ご容赦ください。 ・キーワード引数を装備している。 これは Ruby と比べて大きなアドバンテージ。Ruby の、Hash を使った疑似キーワード引数も悪くはないんだけど、使用できる…

「print arg,」は改行を出力しないけど半角空白は出力されるよ

test.py: print 'foo', print 123, print 'bar' 実行結果: $ python test.py foo 123 bar というわけで、print 文の最後にカンマ "," をつけた場合、それは「改行を出力しない」んじゃなくて、「改行のかわりに半角空白を出力する」という意味でした。そんな…

Python の嫌いなところ

ちょっと古いけど。 デブサミ会場で、雑談していると「PythonはDISらないんですか」と柴田さんから。なんか自虐的じゃない? とは言うものの、Pythonは基本的に良い言語で、 不満な点はかなり微妙だ。一般人にはどーでもいいような点だと思う。 一応リストを…

Google App Engine SDK には Django と WebOb と PyYAML が入っている

Google App Engine SDK をダウンロードしてみた。中を見たら、Django と WebOb と PyYAML がはいってた。Django と PyYAML は知っているけど、WebOb は知らんなあ。Ruby でいうところの cgi.rb に相当するものみたい。Request と Response は扱えるけど、Ses…

グーグル、新プラットフォーム「Google App Engine」を公開

世界中のHosting Service会社は死亡宣告うけたようなもんだな。 米グーグルは2008年4月7日(米国時間)、同社のインフラを使って開発者がWebアプリケーションを開発/運用できるホスティングツール「Google App Engine」のプレビュー版を公開した。システム…

Python と Jython とで動作が異なるスクリプトの例

C Python は Reference count GC であり、Jython はそうでない。それが原因で*1、C Python と Jython とで動作が異なるスクリプトの例。test.py (2008-03-23 modified): def test(filename, s): open(filename, 'a').write(s) filename = 'test.log' for i i…

Mark and Sweep GC より Reference count GC のほうがプログラミングが簡単になる

Python を使って驚いたことのひとつに、open したファイルを close しなくていいということがある。正確に言うと、close 自体は必要なのであるが、Python が勝手に close してくれるのでプログラマーが明示的に close しなくてもよい、ということである。 1:…

文字コードを変換するときに注意する文字

Pythonスレより。 144 名前: 136 Mail: sage 投稿日: 2008/03/02(日) 03:39:09 >>137 「〜」はEUC-JPとUTF-8を相互変換するときのテーブルがOS/言語ごとに違うために 変換できなかったり違うグリフで表示されたりします。 俺はよく使う文字について以下のよ…

排他的ロックをしてるのに、1 プロセスより 2 プロセスのほうが速い?

ところで、<<476 のコードを改造して実験してみたとき、よくわからん現象に見舞われた。1 プロセスだと 1 分近くかかるのに、2 プロセスだと 15 秒で終わってしまうのだ。 コード (hoge.py): #!/usr/bin/env python N = 100000 filename = 'count-file' from…

ファイルを unlock して問題になるくらいなら、OS 任せにするほうがよい

476 名前: デフォルトの名無しさん Mail: sage 投稿日: 2008/03/05(水) 23:48:04 ファイルの排他制御のテストプログラムを書いています。 ただ単に1つのカウントファイルを100万回インクリメントするプログラム #!/usr/bin/env python for i in range(10…

os.times() のバグ

Python 2.5 の os.times() はバグっていて、user time や system time の正しい値が採れない。bench.py def f(n): if n <= 0: return 1 else: return f(n-1) + f(n-2) import os, time t1 = os.times() f(34) t2 = os.times() utime = t2[0] - t1[0] stime =…

Python 2.5.2 リリース

Python 2.5.2 Release 絶望した! 新しいバージョンがリリースされたのに、IT 系ニュースサイトにまったく取り上げられない Python に絶望した! JRuby なんか、RC1 でもニュースになるというのに、この差は何なんだ?

「Python コード添削道場」を添削する その 2

もうひとつ指摘しておきたい。プレゼンでは、次のようなコードが紹介された。 NUMBER_CLASSES = [int, float, long] def isnumber(obj): return any(isinstance(obj, cls) for cls in NUMBER_CLASSES) 添削結果は、「このコードはよいコードです。ただし、co…

「Python コード添削道場」を添削する

Python Workshop the Edge 2007: Pythonコード添削道場 どう書く?.org登場のきっかけとなったプレゼンで、内容はるびまの「あなたの Ruby コードを添削します」の Python 版。初心者にぜひ見てほしいプレゼンなのだが、残念ながら駆け足でのプレゼンなので、…

スクリプト言語の起動時間を調べてみた

実行してみると分かるが、Rubinius の起動は実に遅い。どのくらい遅いかというと、間違って Java を起動したんじゃないかと思うほど遅い。あまりに遅いので、Ruby と Rubinius の起動時間を調べてみた。ついでに、他のスクリプト言語の起動時間も計測してみ…

Python で Rake を真似るとしたら

Python標準モジュールでRakeもどき Python でも distutils を使うと Rake みたいなことができるよという話。でも distutils って、依存性を解決してくれたっけ? たとえばタスク A を実行するためにはタスク B と C を先に実行しなければいけない、というよう…

Python で eRuby を実現するには

インデントベースだとeRubyのようなテンプレートが難しい Matz日記:PythonをDISる Python はインデントベースなので、eRuby に限らずコード生成とは全般的に相性が悪い。しかし、eRuby 程度であれば以下のようなルールで実現できる。 テキストを print 文 (…

*.pyc の owner と permission

なんかコメントがついてた。気がつくのが遅くてすみません。 え、python ってそうなの? 自動保存だとパーミッション関連が大変そうだけど、大丈夫なんだろうか。 http://d.hatena.ne.jp/kwatch/20080209#c1202531672 というわけで、調べてみる。 foo.py: de…