Python

PySideとPyQtの差異

を勝手に翻訳したものです。 APIの差異 importする名前の違い(PyQt4の代わりにPySide) PySideはライブラリ名がPyQtと違います。 from PyQt4.QtCore import * や、 import PyQt4.QtCore と書く代わりに、次のように書いてください。 from PySide.QtCore imp…

Pythonによるデザインパターン(目次)

これは『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)をPythonに翻訳してみようというシリーズです。Rubyによるデザインパターン作者: Russ Olsen,ラス・オルセン,小林健一,菅野裕,吉野雅人,山岸夢人,小島努出版社/メー…

QtのプロパティをPySideで使う

Using Qt Properties in PySideを翻訳。PySide は Property 関数を提供しており、 Pythonで書かれたgetter・setter関数を使って、 QtのプロパティとしてもPythonのプロパティとしてもふるまうようなプロパティを、 定義することが出来ます。以下は、Qtのプロ…

itertools.combinationsを無限長イテレータに対応させる

pythonのitertools.combinationsやitertools.permutationには無限長のイテレータを渡す事はできません。内部でイテレータをタプルに変換しようとするのでフリーズしてしまいます。無限長にも対応する、アルゴリズム自体は難しくはありません。そこで、python…

3つ以上の集合の直積を求めるプログラム

http://d.hatena.ne.jp/yagiey/20100705/1278340237 http://d.hatena.ne.jp/youkoso_guest/20081212/1229089595 に、直積を作る関数について書かれていたのですが、どちらも有限なlistに限定したものだったので、無限リストにも扱える関数を書いてみました。…

3つ以上の集合の直積を求めるプログラム その2

3つ以上の集合の直積を求めるプログラムをClojureで書いてみました。Python版では無限リストを扱う関係の部分でゴチャゴチャしていたのが、Clojureは無限リストを自然に扱えます。一方Clojureは状態変化が基本的に無いので、Python版は直訳は出来ません。clo…

Python 2.7のインストール

Python2.7が正式リリースされた記念に、パッケージのインストールをメモ。 自分が使うものだけをインストールするので、一般性は乏しいです。 Python2.7本体 http://www.python.org/download/releases/2.7/から、windowsの人はinstallerを、その他の環境の人…

treeコマンドを作る

Clojureの練習として、treeコマンドを作って・・・みようとしたのですが、 最初いきなりClojureで作ろうとして混乱してしまいました。 そこで、まず自分が使いなれたPythonでtreeを作ってみました。 実行例: $> python tree.py hello-clojure P:\\hello-clo…

イテレータを分割する

itertoolsには、Trueになる要素を返すifilterと、Falseになる要素を返すifilterfalseがありますが、ifilterとifilterfalseの両方を返す関数があったら便利じゃないか? (schemeやclojureなどにはあるようです)あるいは、True/Falseだけでなく、任意の値で…

Pythonから外部プログラムを起動

Python初心者の友人がバッチファイルの真似事をしようとして、Pythonで外部プログラムの呼び出しかたが分からず悩んでいました。自分自身も初心者のころつまった経験があるので、メモしておきます。 外部プログラムを扱う方法はたくさんある os (system, spa…

パフォーマンス計測のメモ

cProfileとpstats(ボトルネックの調査) 「実行経過のデータをファイルに出力 → データを読める形に出力」という手順で測定します。 実行経過のデータをファイルに出力するには、cProfileを使います。 #encoding:shift-jis # import profile # pure Python…

世間では、単に好きな曲のメドレーを作業用BGMと呼ぶらしいですが、私は曲の境目で集中力がそがれるタイプなので、1つの曲を1時間延々とループさせるwavを作ることにします。wavで出力するので、容量はバカでかくなります。 1. RadioLine Freeというソフト…

py2exeでiconを付ける

setup( options = {'py2exe': py2exe_options}, console = [dict( script = 'dw2.py', other_resources = [], icon_resources = [(0, "dw.ico")], #ここにアイコンを指定 )], data_files = [], zipfile = None )

PyQtでファイルのドラッグ&ドロップ

スクリプトのアイコンにファイルを大量にドラッグ&ドロップしようとすると、 エラーが出るので、ウィンドウを作ってそこにD&D;させるスクリプトを書いてみました。 #encoding:shift-jis from __future__ import division, with_statement, print_function i…

Convention over Configuration パターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Convention over Configuration パターン (1) Convention over Configuration パターン (2) "Convention over Configuration(Co…

Convention over Configuration パターン (2)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Convention over Configuration パターン (1) Convention over Configuration パターン (2) CoCで重要なのは、まず規約を良く練…

メタプログラミングパターン (1) 特異メソッド

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 メタプログラミングパターン (1) 特異メソッド メタプログラミングパターン (2) メソッドの自動定義 メタプログラミングは動的…

メタプログラミングパターン (2) メソッドの自動定義

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 メタプログラミングパターン (1) 特異メソッド メタプログラミングパターン (2) メソッドの自動定義 メソッドを自動的に定義す…

内部DSLパターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 内部DSLパターン (1) 内部DSLパターン (2) ブロック 今回は、内部DSL(ドメイン特化言語)パターンです。 前回のInterpreterパ…

内部DSLパターン (2) ブロック

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 内部DSLパターン (1) 内部DSLパターン (2) ブロック Rubyが内部DSLに向いている一つの理由は、ブロック構文の存在です。 Python…

Interpreterパターン (1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Interpreterパターン (1) Interpreterパターン (2) ファイル検索用言語 Interpreterパターン (3) ASTを手に入れる 周知の通り、…

Interpreterパターン (2) ファイル検索用言語

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Interpreterパターン (1) Interpreterパターン (2) ファイル検索用言語 Interpreterパターン (3) ASTを手に入れる Interpreter…

Interpreterパターン (3) ASTを手に入れる

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Interpreterパターン (1) Interpreterパターン (2) ファイル検索用言語 Interpreterパターン (3) ASTを手に入れる Interpreter…

Builderパターン(1)

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Builderパターン(2) ポリモーフィックなBuilder

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Builderパターン(3) Builderでオブジェクトの妥当性を保証する

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Builderパターン(4) Builderの再利用

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Builderパターン(1) Builderパターン(2) ポリモーフィックなBuilder Builderパターン(3) Builderでオブジェクトの妥当性を保証…

Pythonでマジックメソッド

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次前項でBuilderパターンについて書きましたが、 ComputerBuilderを作っても、まだ、 builder.set_turbo() builder.add_dvd() buil…

Factoryパターン(1) - Factory Method

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Factoryパターン(1) - Factory Method Factoryパターン(2) - 引数にクラスを渡すFactory Method Factoryパターン(3) - Abstract…

Factoryパターン(2) - 引数にクラスを渡すFactory Method

『Rubyによるデザインパターン』(ラス・オルセン著 ピアソン・エデュケーション刊)の例をPythonに変換して書いています。目次 Factoryパターン(1) - Factory Method Factoryパターン(2) - 引数にクラスを渡すFactory Method Factoryパターン(3) - Abstract…