1

我想做这样的事情:

f = lambda x: None

x = [f]

def f(n):
    return n

print x[0](2)

预期的结果是2,但实际上是None

我知道可以用类来解决,但是没有它们可以吗?

4

4 回答 4

0

嗯,这很容易(:。函数和其他任何东西一样是一个对象。那该怎么办

x = [f]

或者

x[0] = f

在你重新定义 f?

于 2013-02-07T22:13:44.403 回答
0

您可以将 f 设置为全局变量:

全局 f
f = lambda x: x+1

x = f

x(1)

输出:2

f = λ x: x+2

x = f

x(1)

输出:3

于 2013-02-07T21:59:13.087 回答
0

Here you are creating an anonymous function and adding it to a list. Now there are two references pointing to the lambda. Although you define another function with same name f, this does not effect the reference in the list as it points to the lambda.

What are you trying to achieve here?

于 2013-02-07T21:46:47.837 回答
0

您正在列表 x 中存储对该函数的引用,而不是其名称。

你可以做类似的事情

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

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

但这有点“糟糕”。也许您可以解释为什么要这样做,我们可以为您找到更好的方法。

于 2013-02-07T21:48:11.080 回答