python函数重新定义

时间:2013-02-07 21:38:17

标签: python function redefinition

我想做这样的事情:

f = lambda x: None

x = [f]

def f(n):
    return n

print x[0](2)

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

我知道可以用课程来解决,但没有它们可以完成吗?

4 个答案:

答案 0 :(得分:0)

在这里,您将创建一个匿名函数并将其添加到列表中。现在有两个指向lambda的引用。虽然您定义了另一个具有相同名称f的函数,但这不会影响列表中的引用,因为它指向lambda。

你想在这里实现什么目标?

答案 1 :(得分:0)

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

你可以做点什么

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

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

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

答案 2 :(得分:0)

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

全球f
f = lambda x:x + 1

x = f

X(1)

OUT:2

f = lambda x:x + 2

x = f

X(1)

OUT:3

答案 3 :(得分:0)

嗯,这很容易(:。功能就像其他任何东西一样。做什么

x = [f]

x[0] = f

重新定义f?

之后