Python

知っている人は知っている、知らない人は知らない『NDjango』

One ASP.NET Advent Calendar 2012の16日目のエントリです。(ちょっと過ぎちゃった・・・) ASP.NET MVCを勉強しようと思っていた矢先、Advent Calendarの募集が始まったので勢いで参加登録しました。 今は反省しています。 3日前に初めてASP.NET MVCを触りま…

C#とIronPythonの連係がすごいことに

つい先日(Apr.12 2010)IronPythonの新しいバージョンがリリースされました。 言語仕様自体は変わっていませんが(2.6.1)、.NET 4.0向け機能が完成したようです。 β版の頃から注目していましたが、C#4.0(dynamic)と非常に相性がいい! 早速プログラムを見てい…

BeautifulSoup -> IronPython <- C#

Pythonの非標準ライブラリにBeautifulSoupというHTML/XMLを解析してくれるものがあります(http://www.crummy.com/software/BeautifulSoup/)。俗に言うスクレイピング、に用います。 以前それをIronPythonで利用しようとした時、当時のIronPythonが仕様的に不…

CGI

コマンドラインから[]python -m CGIHTTPServer[]とするとport:8000に穴を開けて簡易サーバが立ち上がる。 停止はCtrl+Break(Pause). 直下にcgi-binという名でフォルダを作り、そこにスクリプトを置く。 http://localhost:8000/cgi-bin/hello.py などとしてア…

mapとfilterとリスト内包

PHP Array ( [0] => 1 [1] => 2 [2] => 4 [3] => 8 [4] => 16 [5] => 32 [6] => 64 [7] => 128 …

functools.partial

先頭から順に・・・と思っていたのですが、指定することもできるのね。知らなかった。 >>> from functools import partial >>> f = lambda x, y: x*10+y >>> f2 = partial( f, 1 ) >>> f2( 2 ) 12 >>> f3 = partial( f, y=5 ) >>> f3( 3 ) 35

勉強会

発表資料をアップしてくださいました。 http://d.hatena.ne.jp/nullpobug/20080426/1209195536

Metaclass

メタクラスというものを知った。Smalltalkでは当たり前らしい。 Smalltalk勉強してみたいな〜と思いつつ、Pythonでメタクラスを体験。 途中までメモ type( 'ネーミングセンスあふれるクラス名', (スーパークラスのtuple), { メンバのDictionary } ) >>> Foo …

partial application

Python2.5でfunctoolsというモジュールが加わったらしい。全体は眺めてないけど,関数の部分適用とかできるみたい。 >>> from functools import * >>> def foo( x, y, z ) : ... return x + y + z ... >>> add5 = partial( foo, 5 ) >>> add5( 2, 3 ) 10 >>>…

Accumulator Generator

PythonのクロージャはD言語寄りなんでしょうか。 以下のコードは普通に動く >>> b = (lambda x: lambda y: x+y)( 90 ) >>> b( 10 ) 100 でも以下のように累積できない。 >>> def foo1( x ) : ... def foo2( y ) : ... x += y ... return x ... return foo2 .…

PyScripter

Pythonの開発環境って思ったより多いんですね。 どうせEclipseぐらいしかないんだろうなーとか思って, バイト先ではテキストエディタで馬鹿みたくゴリゴリしてた・・・。 軽量でよさげなIDEを発見。 プログラミング中も首にヘビを巻きつけているような ヘビ…

IBM

http://www.python.jp/Zope/links/ibmdevworks こんなにあったのか! 新着Python でのメタクラス・プログラミング、第 3 回 http://www.ibm.com/developerworks/jp/linux/library/l-pymeta3.html?ca=drs-このシリーズは,なぜか第2回だけ翻訳記事がないみた…

var result = from x in Enumerable.Range( 0, 6 ) select Math.Pow( 2, x ); (loop for x in '(0 1 2 3 4 5) collect (expt 2 x) ) [2**x for x in range(6)]

CherryPy

自宅PCにはIronPythonしか入ってなかったので,CPythonとCherryPyも入れてみた。 でも特に何か作りたかったわけでもなく・・・笑

内包

メモだけして寝よう。 http://www-06.ibm.com/jp/developerworks/linux/010420/j_l-py20.html わたしにとって最も刺激的なPython 2.0の新機能は、リスト内包 の追加です。(数学の心得のある読者であればだれでも、この機能が、Zermelo-Frankel集合論の内包の…

list comprehension

http://d.hatena.ne.jp/Nobuhisa/20070819/1187462888 のコメント欄で, anonymousさんに「リスト内包」というものを教えていただきました。 (http://www.python.jp/doc/2.4/tut/node7.html#SECTION007140000000000000000) 勉強しよう。。。 もともとバイ…

input関数

input関数は eval(raw_input(prompt)) と定義されているらしい。 Pythonコード入力されたら超危険・・・。苦笑 Pythonの入門サイトで良くinput使ってるところを見かけるが。。。 [追記] IronPythonで書いてみた。 >>> data = [ 1, 2, 3, 4 ] >>> def hoge() …

めんどくさがり屋のために

LINQ用に用意された標準の拡張メソッドは普通に使っても結構便利。 Pythonの組み込み関数の知識も貧弱だったので,あわせて勉強してみた。メモりんこ。 >>> map( lambda x: pow( 2, x ), data ) [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024] List<int> data = </int>…

遅延

Pythonを触り始めたころ、こんなこと出来たりするのかなと対話してみたら出来て少し感動した。 >>> class Hoge : def method( self ) : print "hello" >>> foo = Hoge >>> instance = foo() >>> instance.method() hello 似たようなことをC#3.0でやるとする…

三項演算子

pythonには三項演算子が無いみたい。*1 pythonではlambda式にif文も使えない! ということで打開策を考えてみることに。 >>> a = 10 >>> b = 20 >>> c = 30 >>> d = ((a == 10) and b) or c >>> d 20 一応でけた。 (a == 10) and b or c でもいけるけど見づ…

package

http://www.python.jp/doc/2.4/tut/node8.html#SECTION008400000000000000000

職場(開発チームはサーバルームが作業場!)が暑すぎる。。。 ただでさえ蒸し暑いの嫌いなので死んでしまいそう。 不思議な動きをするんだなぁ。 ということでメモ。 これはどういう面で役に立つんだろう・・・。逆にややこしいような・・・。 >>> class Te…

__そんなバナナーー!!!

Pythonのクラスはpublicとかprivateを指定できないよ!っていう文をどこかで見て、 「確かにpublicとかprivateらしきキーワードをサンプルで見たことないなぁ」 「会社の人が書いてたコードにもそんなのなかったなぁ」 と思っていたら、実はプライベート宣言…

自分用ツール

普通のテキストエディタでPython書いてるあなたに贈る(←おれ)ツール。 やっぱねー、 規模が大きくなってくると各クラスのメンバまで全部正確に覚えてられないです。苦笑 インテリセンス作る技術は無いので、コード解析ごっこするツールを作りました。 って…

抽象クラス

Pythonにはそもそも抽象クラスが無いようですが、 ネットで探してたらこんな実現方法を発見。 class AbstractHoge : def method( self ) : abstract class Hoge( AbstractHoge ) : pass # def method( self ) : return "hello" Hogeクラスでmethodを宣言しな…