Posterous Spaces is no longer available Thanks to all of my @posterous peeps. Y'all made this a crazy ride and it was an honor and pleasure working with all of y'all. Thanks to all of the users. Thanks to the academy. Nobody will read this.
Pythonバージョン 2.5 or 2.6を使う。 3.xはまだ時期尚早というか、DjangoやGoogle App Engineが対応していないので事実上選択肢にならない (DjangoとGoogle App Engineが対応したら移行が加速すると思います)。 ちなみに、RedHat LinuxにはPython 2.4がプリインストールされていますが、 SQLiteが動かないなど開発作業を行うにあたってはちょっと厳しい。 ソースコンパイル 、 EPEL からyumで拾う、aptitude install python2.5するなどなど、お好きな方法でインストールしてください。 MacOSXならMacPortsが便利です。 パッケージ管理 とりあえずsetuptoolsとpip入れましょう。 setuptools pip setuptools入れ方: wget http://peak.
((Pythonで) 書く ((さらに良い) Lisp) インタプリタ) Peter Norvig / 青木靖 訳 前のエッセイでは、90行のPythonコードでシンプルなLispインタプリタを書く方法を示した(lis.py)。このエッセイでは、3倍込み入っているが、より完全なlispy.pyを実装しよう。それぞれの節で1つの機能追加を扱っている。 (1) 新しいデータ型 - 文字列、論理型、複素数、ポート Lispyへの新しいデータ型の追加は3つの部分からなる。データの内部表現、それを扱う手続き、読み書きのためのシンタックスだ。ここでは4つの型を追加する(入力ポート以外はPythonのネイティブ表現をそのまま使う)。 文字列 文字列リテラルはダブルクォーテーションで囲まれる。文字列の中で \n は改行を、\" はダブルクォーテーションを意味する。論理型 構文 #t と #f はTrue
やっとPythonのクロージャの仕組みを少しは理解した件 で、清水川先生がクロージャを返すとき実行中のフレームオブジェクトが保存されるのか?という疑問を呈されている。 結論から言うと、フレームオブジェクトは保存されず、クロージャが必要とするオブジェクトだけが残される。この辺の仕組みがを簡単に解説してみよう。尚、以下の解説はPython2のものであり、Python3については未調査である。 例として、こんな関数を考えてみよう。 def func(): a = 100 b = 200 c = 300 def func2(): return a, b a = 400 return func2 この例では、func2 は func のローカル変数 a と b を参照するクロージャである。実行すると、(400, 200) を返す。 さて、関数を実行中、そのローカル変数は "セル"(cell)というオ
エキスパートPythonプログラミング読書会03 : ATND に参加して講師のお手伝いをしてきました。 2章の後半、以下の内容を行いました。 イテレータとジェネレータ itertools モジュール デコレータ with と contextlib エキ Py 読書会02 2章後半 最後にこんな質問がありました。 コンテキストプロバイダの実装方法が2通りあるが、デコレータで実装するか、with 文(プロトコル) で実装するか、どのように使い分ければ良いか? @shimizukawa に聞いてみて、とても勉強になりました。with 文を使用するときの分かり易いポイントの1つとして処理対象がクラスであれば、ベースクラスを継承してサブクラスで __enter__ と __exit__ を実装することができます。わざわざクラスで実装するほどでも、、、というときはデコレータで実装するのも良いです。そ
In a previous essay I showed how to write a simple Lisp interpreter in 90 lines of Python: lis.py. In this essay I make the implementation, lispy.py, three times more complicated, but more complete. Each section handles an addition. (1) New data types: string, boolean, complex, port Adding a new data type to Lispy has three parts: the internal representation of the data, the procedures that operat
やる夫と Python で学ぶ Twitter の OAuth - YoshioriのBlog よいまとめ! はてブコメントより引用 id:agricola Python, あれげ リスト内包の使い方に美がないなぁ……。辞書のキーと値を、キーで並べ替えて取り出して=で連結するなら ['='.join((k, v)) for k, v in sorted(d.items(), key = lambda x: x[0])]とか書く気がする。 そんな餌で俺様が釣られクマーーーーーーっ >>> ['='.join((k, v)) for k, v in sorted(d.items(), key = lambda x: x[0])] ['a=k', 'b=j', 'c=i', 'd=h', 'e=g', 'f=f', 'g=e', 'h=d', 'i=c', 'j=b'] ふむ。なんだこのゴテゴテ
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 counts. Special cases aren't special enough to break the rules. Although practicality beats purity. Errors should never pass silently. Unless explicitly silenced. In
The Zen of Python 解題 - 前編 "The Zen of Python" の役割 "The Zen of Python" は Tim Peters氏が1999年に「Pythonらしさとはなにか?」と問われて書き上げたものであることは前述した。Python 2.0 のリリースに向けて活発に開発が進められていたころである。 この Python 2.0 は、いろいろな意味で重要なリリースだ。まず、Python の著作権の帰属、ライセンス等について数々の「大人の話し合い」をくぐり抜け、現在の PSF (Python Software Foundation) による安定した体制を築き上げる第一歩となった、記念すべきリリースである。 また、このリリースでは リスト内包(例 [x*x for x in range(10)]) や累積代入文(例 a += 10) などの Python 文
エキスパートPythonプログラミング読書会02 : ATND に参加して講師のお手伝いをしてきました。 今回の読書会でお話できたのは第2章のうち以下の内容だけでした。 リスト内包表記 イテレータとジェネレータ ジェネレータ コルーチン ジェネレータ式 準備不足で要領よく進行できず、すみませんでした。実際にやってみた雰囲気や進め方など、次回への改善に繋げていきます。2章全般の資料を読書会の前にアップロードして公開していますが、次回まで時間があるので後半部分は修正すると思います。2章全般の内容で、 この内容を詳細に知りたい! この内容がよく分からなかった(> <) などなど、何かしらありましたら Twitter で @t2y か、ハッシュタグ #expertpython を付けてコメントください。 エキ Py 読書会02 2章前半 スライド資料、サンプルコードは 2010/9/29(水) に
Perl のクロージャを読んでちょっと気になったので。 Pythonの場合、簡単な例でいくと def func1(args): x = args def func2(y): return y+' :closureValue='+x return func2 a = func1('test') print a(' closure') a = func1('abc') print a(' closure') a = func1('efg') print a(' closure') 実行結果は以下 closure :closureValue=test closure :closureValue=abc closure :closureValue=efg※でも古いPythonだと動きませんね・・・。 うーん、クロージャを使う利点としては immutable化 関数テンプレート化 が大きいかなあと思
目次 dis/inspect モジュールと ceval.c を使った Python のハッキング dis モジュールと python interpreter 関数に属する func_code オブジェクトとco_varnames, co_names, co_consts 属性 python interpreter ceval.c:Python Virtual Machine の C ソース・コード inspect モジュール dis, inspect を使った一行コード python コードの hack x,y = y,x, x,z,y = z,y,x Python オブジェクト 関数 STORE_GLOBAL/STORE_NAME inspect 経由による クラスの disassemble LOAD_ATTRI リスト hash generator thread decorator 構
Python Support for Growl http://growl.info/documentation/developer/python-support.php まずGrowl Developer DownloadsからSDKをダウンロードする。 http://growl.info/downloads_developers.php Pythonは標準でサポートされているのでBindings/pythonフォルダに入ってsudo python setup.py installするだけ。 import Growl g = Growl.GrowlNotifier( applicationName='FindNameError', notifications=['SyntaxError', 'NameError']) g.register() g.notify( noteType='Na
C++ のクラスと Python のクラス C++ と Python の大きな違いは、前者がコンパイラ向け、 後者がインタプリタ向けの言語であるということ。あたりまえだけど。 C++ では「クラス」はあくまで、ヘッダファイルなどでの「定義」であって、 コンパイラにかけるときには、実際にその定義されたコードが実行される ことはない。これもあたりまえ。 一方、Python はインタプリタなので、「クラス」文はいきなり実行されている。 もうちょっと具体的に言うと、: 1: class foo(object): 2: def bar(self): 3: print 'Hello, world!!' 4: 5: x = foo() 6: x.bar() 上記のような Python のプログラムがあったとき、C++ の感覚だと、 5行目から実行されているような気がする。で、foo() で foo クラ
最近、流行りのvirtualenvですが、仕組み的なものにあまり触れられてないように 思えたので書いてみます。 機能 とりあえずvirtualenvの機能は ライブラリがまっさらな状態な環境を作る 作られた環境に対してのみモジュールをインストールできる です。 これを実現する仕掛けはそれほど難しくありません。 (virtualenv自体も基本的に1ファイルのモジュールです。) とりあえず簡単に見ていきます。 ライブラリパス まっさらなライブラリを持った状態のpython環境はどうやって作るのでしょう? pythonは自分自身のパスの上位のlib/pythonx.xをライブラリとして認識します。 (pythonをソースからprefix指定でビルドした事があればわかると思います。) . |-- bin | `-- python `-- lib `-- python2.5 `-- ここが標準ライ
久しぶりのエキスパートPythonプログラミング補足記事です。今回はプロファイリングの補足です。 Pythonは標準ライブラリにプロファイラ(profile/cProfileモジュールのProfileクラス)を持っていて、 その結果を格納しているpstats.Statsクラスにはプロファイル結果を解析するのに必要な機能(実行時間でのソートや、呼び出し元/呼び出し先の表示など)が一通りそろっています。これらのクラスについてはエキスパートPythonプログラミングで使い方を解説してあります。 コマンドラインで作業するときにはIPythonからStatsオブジェクトを直接操作してプロファイル結果を調べられるのですが、やはりプロファイル結果はグラフィカルに表示してくれた方が見やすいものです。特に「エキスパートPythonプログラミング」の中でも言及されているKCacheGrindというGUIツール
Python Tutor is the only tool that lets you write code in a web browser and see what happens step-by-step as the computer runs it. It visualizes variables, objects, pointers, data structures, and stack frames. These visuals help students to debug their homework, teachers to explain concepts, and programmers to prepare for job interviews. You can also chat with an AI Tutor if you need help understa
原文:http://python-history.blogspot.com/2010/06/inside-story-on-new-style-classes.html 原文投稿者:Guido van Rossum [注意:この投稿はとても長くて技術的です] 表面上は、新スタイルクラスは、元々のクラスの実装と非常に似通って見えるが、新スタイルクラスでは次のような数々の新しいコンセプトが導入されている。 __new__()という名前の低レベルのコンストラクタ 属性アクセスのカスタマイズを一般的にできるようにするデスクリプタ 静的メソッドとクラスメソッド プロパティ(演算してから結果を返す属性) デコレータ(Python 2.4から導入) スロット 新しいメソッド解決順序(Method Resolution Order, MRO) このエントリーでは、これらのコンセプトについて光を当てていこう
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く