1

私はこのようなことをしたいです:

f = lambda x: None

x = [f]

def f(n):
    return n

print x[0](2)

期待される結果はですが2、実際はNoneです。

クラスで解決できることは知っていますが、クラスなしで解決できますか?

4

4 に答える 4

0

ここでは、無名関数を作成してリストに追加しています。現在、ラムダを指す 2 つの参照があります。同じ名前 f で​​別の関数を定義しても、ラムダを指しているため、リスト内の参照には影響しません。

ここで何を達成しようとしていますか?

于 2013-02-07T21:46:47.837 に答える
0

うーん、それは簡単です (:. 関数は他のものと同じようにオブジェクトです。

x = [f]

また

x[0] = f

fを再定義した後?

于 2013-02-07T22:13:44.403 に答える
0

f をグローバル変数として設定できます。

グローバル f
f = ラムダ x: x+1

x = f

×(1)

アウト: 2

f = ラムダ x: x+2

x = f

×(1)

アウト: 3

于 2013-02-07T21:59:13.087 に答える
0

関数への参照を名前ではなくリスト x に格納しています。

あなたは次のようなことができます

f = lambda x: None
x = ['f']
def f(n):
    return n

print globals()[x[0]](2)

しかし、これはちょっと「悪い」です。なぜそうしようとしているのかを説明していただければ、より良い方法を見つけることができます。

于 2013-02-07T21:48:11.080 に答える