機械です。
来るべきPython 3.x の脅威(サードインパクト?)に
備え、便利な文法・関数をモジュールで保管します。
とりあえず、限定的ではありますが、lambda キーワー
ドをシミュレートする関数を書いてみました。
※限定的というのは、位置引数やキーワード引数に対応
できませんでした・・・まぁ、lambda でそんなややこ
しい関数書いたこと、無いですけど・・・
def lmd(exp):
exp = exp.split(":")
if len(exp) < 2:
exp = exp[0]
def r():
return eval(exp)
else:
def r(*argv):
dic = {}
args = exp[0].split(",")
for x in range(len(args)):
dic[args[x]] = argv[x]
return eval(exp[1],dic)
return r
使用法
func = lmd(expression)
expressionは文字列で、例えば"a,b:a+b"のように書きます。
※'lambda'の6文字を'lmd'の3文字にしたので、ダブル
クォーテーション2個を含めても、以前よりもコンパ
クト。
内部で exec を使えばもう少し柔軟性が出るはずです
が、exec も関数に変更されるとのことなので、eval を
使って従来のように値のみにしました。
・・・なぜにこんな苦労しなきゃならないか考えると、
泣けてきます。
※input,raw_input も合わせて、classic パッケージ、
とでもしようかしらん。
/機械伯爵/