我想做这样的事情:
f = lambda x: None
x = [f]
def f(n):
return n
print x[0](2)
预期结果为2
,但实际上是None
。
我知道可以用课程来解决,但没有它们可以完成吗?
答案 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设置为全局变量:
全球fx = f
X(1)
OUT:2
f = lambda x:x + 2
x = f
X(1)
OUT:3
答案 3 :(得分:0)
嗯,这很容易(:。功能就像其他任何东西一样。做什么
x = [f]
或
x[0] = f
重新定义f?
之后