[Python]: Python チュートリアル メモ2
Guidoのメモ書きのメモ書き。(6章〜最終章まで。ほか)
format strings は vars() を使うと楽。
>>> spam = "SPAM!" >>> egg = "EGG!!" >>> bacon = "BACON!!!" >>> "%(spam)s, %(egg)s, %(bacon)s" % vars() 'SPAM!, EGG!!, BACON!!!'
ファイルライクオブジェクトは、そのままループにかけられる。
>>> from StringIO import StringIO >>> s 'SPAM!\nEGG!!\nBACON!!!' >>> s = StringIO(s) >>> for i in s: ... print i ... SPAM! EGG!! BACON!!!
例外はインスタンス化して送出する(されている)。
import os と書くのは、os.open が built-in の open を上書きしないようにするため。
対話モードのインタプリタを起動するときに PYTHONSTARTUP に指定されたファイルが実行される。
module を生成する。
>>> d = dict() >>> exec "x = 1" in d >>> import imp >>> imp.new_module("foo") <module 'foo' (built-in)> >>> foo = _ >>> foo.__dict__.update(d) >>> foo.x 1
Via nishio.
リストの範囲外を取得する。
>>> l = range(4) >>> dict(enumerate(l)).get(4, "nothing") 'nothing'
Via http://d.hatena.ne.jp/morchin/20070914#p1
generator をコピーしたら元の generator を操作してはいけない。
>>> import itertools >>> def foo(): ... yield 1 ... yield 2 ... >>> f = foo() >>> f1, f2 = itertools.tee(f) >>> f.next() 1 >>> f1.next() 2 >>> f2.next() 2 >>> f.next() ------------------------------------------------------------ Traceback (most recent call last): File "<ipython console>", line 1, in ? StopIteration
Via [Python] ジェネレータのコピー http://d.hatena.ne.jp/morchin/20070829#p1
逆ポーランド記法
def _calc(calc): def func(string): if " " in string: string = string.split() filter(calc, string) return func @_calc def calc(val, stack=list()): if val == "=": print " result %d" % stack.pop() else: func = { "+": lambda x, y: y + x, "-": lambda x, y: y - x, "*": lambda x, y: y * x, "/": lambda x, y: y / x, }.get(val) if func: val = func(stack.pop(), stack.pop()) stack.append(int(val)) print stack if __name__ == "__main__": calc("53+2*4-3/=") calc("12+34+*=") calc("0 53 + 2 * 4 - 3 / =") calc("0 12 + 3 4 + * =")
http://MiCHiLU.com/blog/posts/125/
- Added at Fri, 2 Nov 2007 03:01:11 +0900
- Last modified at Fri, 2 Nov 2007 03:02:36 +0900
This work is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.1 Japan License. http://creativecommons.org/licenses/by-nc-sa/2.1/jp/
author:
Posted on
Updated on