lambdaを関数にネストする
こうならないためにはデフォルト引数で指定しておく。
lambdaが作られるときの値がつかわれる。
nonlocalは飛ばして次へ~
>>> def func(): x = 4 action = (lambda n: x**n) return action >>> x = func() >>> x(4) 256ループ内でlambdaを定義した場合は最後の変数が使われるので注意
>>> def makeActions(): ... acts = [] ... for i in range(5): ... acts.append(lambda x: i**x) ... return acts ... >>> acts = makeActions() >>> acts[0](2) #4**2になる 16 >>> acts[0](0) #4**0 1 >>> acts[2](2) #4**2 16
こうならないためにはデフォルト引数で指定しておく。
lambdaが作られるときの値がつかわれる。
>>> def makeActions(): ... acts = [] ... for i in range(5): ... acts.append(lambda x, i=i: i**x) ... return acts ... >>> acts = makeActions() >>> acts[0](2) 0 >>> acts[2](2) 4
nonlocalは飛ばして次へ~
0 件のコメント:
コメントを投稿