2010-04-01から1ヶ月間の記事一覧

属性の設定を制限

どうもここら辺の知識がないので理解できてないっぽい。 http://www.python.jp/doc/release/ref/datamodel.html こっちも見て勉強しとこう。 def no_new_attributes(wrapped_setattr): """ 新しい属性を追加しようとするとエラーを吐くが、 既存の属性に新し…

メタクラスとは

メタクラスとは - Weblio辞書

定数を定義する

pythonの定数定義は思っていたよりもメンドクサイ。 constのクラスがデフォルトでは用意されていない? なので__setattr__,__delattr__に制約を定義したクラスをモジュールとして組み込む実装がCookbookに紹介されている。不変オブジェクトだと問題ないが、…

IDLE PythonShell

こんなのあったんだ。全くつかってなかったw 今度からはこっちを使おう。 FAQ - Pythonのお勉強

スーパークラスの呼び出し

単純な振る舞いはまったく同じなのだけど、多重継承とかする場合には ②の方法が良いそうだ。なんでかは分からないけど、そっちで覚えたほうが良いらしい。 >>> class OneMore(Behave): # ①委譲を用いる ... def repeat(self,N): Behave.repeat(self,N+1) ...…

ポリモーフィズム、継承

Pythonだとポリモーフィズムの為にJavaのように継承、IFなどを使わなくて良いそうだ。 クラスの中に同じメソッドがあれば良いらしい。 そういえばPythonって型の配列って無いんだっけ。だからそういう事できるのかな。Pythonって継承はあるみたいだけど、IF…

クラスの特殊メソッド

__から始まっている関数は特殊メソッドらしく、これらをクラスに定義する事で インスタンスに値、リスト、ディクショナリなどとの互換性を持たせられる。らしい。特殊メソッド名 - Dive Into Python 3 日本語版 http://www.python.jp/doc/release/ref/specia…

クラスについて

クラスの関数には全てselfの引数定義が必要。 でも、selfは使うときに指定する必要はないらしい、Pythonが勝手に割り当てるみたい。 >>> class Behave(object): ... def __init__(self, name): ... self.name = name ... def once(self): ... print("Hello,"…

例題を解いてみた

10分でコーディング | プログラミングに自信があるやつこい!! 10分位だったと思うけど、実際の所結構テンパる。 もっと簡単にかけるんだろうなぁ、と思うと時間を消費するので、 ごりごりやったほうが時間は早い。

ディクショナリの和集合と交差集合

結果から確かに求められてるけど 和集合ってなんで求められるのか分からないな。 a = dict.fromkeys(range(1000)) b = dict.fromkeys(range(500,1500)) # 和集合 1-1500 union = dict(a, **b) # 交差集合 500-1000 inter = dict.fromkeys([x for x in a if x…

10日目

なんか段々とつまらなくなってきたなー。 明日からオブジェクト指向に行こうかな。 サーチとソートは嫌いだ。

教科書的な物

メモ Dive Into Python 3 日本語版

yieldについて

yieldはイテレータを返すと覚えていたけど、 StopIterationまで行くと破棄されるみたい? 余り意識していなかったので下のような例に違和感があった。 >>> def test4(): ... a = iter([1,2,3]) # ちょっと違和感ある所 ... while True: ... yield next(a) ..…

zipについて

>>> z1 = zip([1,2,3,4]) >>> z2 = zip([1,2,3,4],[5,6,7,8]) >>> z3 = zip([1,2,3,4],[5,6,7,8],[9,10,11,12]) >>> >>> [i for i in z1] [(1,), (2,), (3,), (4,)] >>> [i for i in z2] [(1, 5), (2, 6), (3, 7), (4, 8)] >>> [i for i in z3] [(1, 5, 9), …

ディクショナリの各キーに複数の値を割り当てる

これ色々使えそうなのでメモしとこ # ディクショナリにListを入れて追加している # valueの重複は許している d1 = {} d1.setdefault(key,[]).append(value) # ディクショナリにディクショナリを入れて追加している # valueの重複は許さない # getした後なら…

リストのスライス

>>> l = [1,2,3,4,5,6,7,8,9,10] >>> l[0:1] [1] >>> l[0:4] [1, 2, 3, 4] #最初から最後までステップ2で取り出す >>> l[::2] [1, 3, 5, 7, 9] #2番目から最後までステップ2で取り出す >>> l[1::2] [2, 4, 6, 8, 10] #2番目から最後の一個前までステップ1で…

組み込み関数

結構多いから便利なのか。http://pythonjp.sourceforge.jp/dev/library/functions.html

yieldについて

Python2.5Docを見ても私には理解できません。ようはyieldが入っている関数なら、イテレータを返せるよ。 一回目のnext()が実行されると関数内yieldの位置まで処理が走ってくれる。 yieldを通してreturnみたいな動作が出来るよって事なのかな。 >>> def hoge(…

リストのコピーについて

リストのコピーの振る舞いがイメージと違ったのでメモ # 変数代入 >>> a = 1 >>> b = 2 >>> a 1 >>> b 2 >>> >>> # リスト代入の振る舞い >>> a = [1,2,3] >>> b = a >>> a.append(4) >>> >>> a [1, 2, 3, 4] >>> b [1, 2, 3, 4] >>> # リストコピーの振る舞…

Python2と3の違い

ここがよく分かる。 2to3を使ってコードをPython 3に移植する - Dive Into Python 3 日本語版Python 2 と Python 3 のユニコード文字列、バイト列の違いメモ - 銀月の符号 Evernote shared notebook: http://journal.mycom.co.jp/articles/2009/01/01/python…

リストのリストを作る

多次元リストを作成する場合はリスト内包にて作りましょう!初心者はミスるって書いてるけど、普通にミスるんじゃないだろうか。。。 >>> a = [[0 for col in range(3)] for row in range(2)] # リスト内包にてリスト作成 >>> b = [[0]*3]*2 # 参照コピーに…

a is bで同一性チェックできる

# a is b は普遍オブジェクトでは意味が無い >>> a = 'a' >>> b = 'a' >>> a is b True >>> a == b True >>> # Listなどの可変オブジェクトでは同一か判断できる >>> a = ['a'] >>> b = ['a'] >>> a is b False >>> a == b True >>>

何か作ろう

とりあえず、今日はファイルの読み書き勉強しました。 一つ一つ勉強するのも良いけど何か作った方が良さそうだな。。。ソースコードを色付けして記述する(シンタックス・ハイライト) - はてなダイアリーのヘルプ こんなのが在るらしいのでこれを使って作っ…

Pythonの勉強日記

Pythonの勉強日記を書いていく予定。