サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
今年の「#文学」
morchin.sakura.ne.jp
ここでは、PySideモジュールを使用したQtプログラミングの記事を紹介します。 内容に関しては、順次追加してアップロードする予定です。 参考サイト 公式サイト: PySide (Python for Qt) PySideとPyQtの差異 ダウンロード PySideによるQtプログラミング入門 (PDF) サンプルソースファイル
1 ディスクリプタ ディスクリプタとは代入、参照、削除を扱う属性を持ったオブジェクトのことをいう。 具体的には、__get__、__set__、__delete__のいずれかを定義したオブジェクトをディスクリプタという。 ディスクリプタにより属性のデフォルト lookup の挙動を変更することができる。 property、bound method、unbound method、static method、class method、super もディスクリプタの考え方でC言語で実装されている。 2 シグネチャ __get__(self, obj, type=None) ⇒ value __set__(self, obj, value) ⇒ None __delete__(self, obj) ⇒ None __get__、__set__両方定義されているオブジェクトをdata des
import os os.chdir(path) 現在の作業ディレクトリ path に設定する os.getcwd() 現在の作業ディレクトリを表現する文字列を返す os.chmod(path, mode) path のモードを数値 mode に変更する os.listdir(path) path内のファイル、ディレクトリのリストを返す os.mkdir(path[,mode]) 数値で指定されたモード mode をもつディレクトリ path を作成する os.mkdirs(path[,mode]
1 easy_installとは easy_installはRubyのgemにあたるコマンドで、パッケージ管理システムからPythonの モジュールを自動で検索してインストールやアップデートしてくれるツール。 PerlのCPANにあたるものはPythonでは、Python Package Index、通称Python Cheese Shopという。 Python Package Index (http://pypi.python.org/pypi) 2 setuptoolsのインストール easy_installコマンドを使用してモジュールを自動でインストールするのだが、 setuptoolsをインストールすると使えるようになる。 setuptoolsをインストールするには、まず以下のURLから ez_setup.pyをダウンロードして実行すれば良い。 ez_setup.py (h
1 結合メソッドと非結合メソッド クラスの属性を参照して関数オブジェクトを返す場合、 結合メソッドオブジェクトもしくは非結合メソッドオブジェクトでラッピングして返す。 結合メソッドは特定のインスタンスに関連付けられ、 非結合メソッドは特定のインスタンスに関連付けらていないものとなる。 >>> class Foo: ... def foo(self, x): ... print x ... >>> f = Foo() >>> f.foo # 結合メソッド <bound method Foo.foo of <__main__.Foo instance at 0x00DF4E18>> >>> Foo.foo # 非結合メソッド <unbound method Foo.foo> >>> f.foo('x') # 結合メソッド呼び出しは第一引数に
>>> def deco(func): ... return 'Hello, world!' ... >>> @deco ... def foo(): ... print "I'm never called." ... >>> foo 'Hello, world!' 関数fooが関数decoの戻り値により'Hello, world!'という文字列に置き換わっている。 但し、通常デコレータの期待される用途としては、関数に機能を追加することである。 以下の例では関数fooに実行時間を表示する機能を追加している。 >>> import time >>> >>> def profile(func): ... def wrapper(*args, **kw): ... timer = time.clock ... t0
Pythonでの関数型プログラミングの基本は、ご存知の通りmap()、filter()、reduce()、lambdaである。 但し、map()、filter()はリスト内包表記で実現できる。 また、2007年から2008年にかけてリリース予定のPython 3.0では、 map()、filter()、lambdaはそのままで、reduce()はfunctoolsモジュールに移動される。 その他の機能の実現方法も見てみよう。 2 クロージャ クロージャ とは、"はてな"のキーワードによれば、 関数内に出現するフリー変数(関数内で宣言されていない変数)の解決の際、 実行時の環境ではなく、関数を定義した環境の変数を参照する機能である。 Pythonでクロージャを実現する方法を考えてみよう。 変数Nを静的に束縛する方法を考えてみる。 >>> def addN_factory(N): ...
1 文字コード Pythonでは文字コードに関わる部分は以下の3つである。 入出力は以下の3つの優先順にエンコーディングを決定する。 内部処理コード ソースコード・エンコーディング 入出力データのエンコーディング 処理の際に指定したエンコーディング localeのエンコーディング デフォルトエンコーディング 3 ソースコード・エンコーディング Python 2.3からスクリプトファイルのエンコーディングを指定可能。 指定方法は、ファイルの1行目もしくは2行目に以下のどちらかで指定する。 # coding: エンコード名 もしくは、 # coding=エンコード名 また、前後に余計な文字を指定することも可能。 エンコード名は、ファイルを保存する際に指定したエンコードを指定する。 ユニコードの文字列リテラルは、ファイル内に書かれている以上 あるエンコードで書かれているはずだが、 上記で
Programmer's Gate あなたは、4754人目のお客様です このサイトでは、プログラマーのための情報を提供します。
1 データの保存場所 Pythonでは、データを保存できる場所は以下の3通りである。 変数 属性 アイテム 順に見ていくと、変数は通常の a = 1 の a で、属性は a.x = 1 の x で、アイテムは、a[0] である。 変数、属性は生でアクセス可能だが、アイテムに関してはメソッドや演算子を通してしかアクセスできない。 変数は、関数、モジュールが持つことができる。 属性は、関数、クラス、モジュールが持つことができる。 アイテムは、ビルトインの辞書やリストやセットなどが持つことができる。 また、上記3通りのメモリ上に保存するという方法でなく、外部ファイルにデータを保存する(永続化する) ということも考えられるが、ここでは考えないことにする。 2 スコープと名前空間 変数のスコープは以下の4種類ある。 ローカルスコープ (L ocal scope) ネストスコープ (E ncl
type型である。このようにクラスオブジェクトの型を メタクラス と呼ぶ。 オブジェクトの振る舞いは型で決まる。つまり、クラスオブジェクトの振る舞いはメタクラスで決まる。 typeをサブクラス化して作成したカスタムメタクラスをメタクラスに設定することで クラスの挙動をカスタマイズすることも可能。 ところで、クラスには旧スタイルクラスと新スタイルクラスの2つが存在するが、 2つの振る舞いの違いはメタクラスによるものである。 旧スタイルクラスのメタクラスは、types.ClassTypeであり、 新スタイルクラスのメタクラスは、typeである。 それぞれの属性は次の通り。 types.ClassType.__call__ types.ClassType.__new__ types.ClassType.__class__ types.ClassType.__red
1 minidom 2.0からxml.dom.minidomモジュールが追加された。 このモジュールでXMLの処理が簡単にできる。 まずXMLを読み込むには以下のようにする。 >>> from xml.dom import minidom >>> xmldoc = minidom.parse('test.xml') # XML文書が読み込まれる >>> >>> print xmldoc.toxml() <?xml version="1.0" ?> <test> <language id="1"> <name>Python</name> <version>2.5.1</version> </language> <language id="2"> <name>Ruby</name> <version>1.8.6</version> </language> </
1 実行時間計測の基本 パフォーマンスチューニングの基本はプロファイリングして ボトルネックをなくすことであるが、 実行時間を計測をすることが重要になる。 Pythonで実行時間を計測するには、timeitモジュールを使用する。 まず基本的な使用方法を見てみよう。 >>> import timeit >>> >>> setup=''' ... def foo(x): ... return x*2 ... ''' >>> stmt = 'foo(1)' >>> >>> t = timeit.Timer(stmt, setup) >>> t.timeit() 0.53254254381492616 >>> >>> t.repeat(3, 1000000) [0.53528088067059088, 0.53709172534497895, 0.554314
1 ctypesによるDLL内の関数の呼び出し ctypesモジュールとは、Cデータ型をPythonで生成・操作したり, DLL内の関数を呼び出したりするためのモジュールである。 以下、DLL内の関数を呼び出してみる。 >>> from ctypes imoprt * >>> cdll.msvcrt.printf('Hello, world!\n') Hello, world! 14 >>> cdll.msvcrt.printf('double value: %f', c_double(3.14)) double value: 3.14000022 cdllではcdecl呼び出し規約を使い、上記でprintf()関数が呼び出される。 また、Pythonの整数型、文字列型、unicode文字列型以外の型はCデータ型に変換できるように 対応するctypes型でラップする必要がある
Programmer's Gate /Effective Python Effective Python Pythonの基本を一通り勉強した人が次に読む記事を目指して書く予定。 Python 2.5を対象とする。
このページを最初にブックマークしてみませんか?
『morchin.sakura.ne.jp』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く