我愿意做这样的事情:蟒蛇功能重新定义
f = lambda x: None
x = [f]
def f(n):
return n
print x[0](2)
预期的结果是2
,但它实际上是None
。
我知道可以用类来解决,但是可以在没有它们的情况下完成吗?
我愿意做这样的事情:蟒蛇功能重新定义
f = lambda x: None
x = [f]
def f(n):
return n
print x[0](2)
预期的结果是2
,但它实际上是None
。
我知道可以用类来解决,但是可以在没有它们的情况下完成吗?
在这里,您正在创建一个匿名函数并将其添加到列表中。现在有两个引用指向lambda。虽然您定义了另一个具有相同名称f的函数,但它不会影响列表中的引用,因为它指向lambda。
你想在这里实现什么?
您正在将函数的引用存储在列表x中,而不是其名称。
你可以做类似
f = lambda x: None
x = ['f']
def f(n):
return n
print globals()[x[0]](2)
但这是有点 “坏”。也许你可以解释你为什么试图这样做,我们可以找到更好的方法。
可以在设定f作为全局变量:
全球˚F
F =拉姆达X:X + 1
X = F
X(1)
OUT: 2
f = lambda x:x + 2
X = F
X(1)
OUT:3
嗯,这很容易(:。函数是其他任何东西的对象。什么做
x = [f]
或
x[0] = f
你重新定义˚F后?
不,不是没有'x [0] = f'再次。 [此前我的答案](http://stackoverflow.com/questions/12080552/python-list-doesnt-reflect-variable-change-new-to-python/12080644#12080644)揭示了为什么这不会'以任何方式工作? –
那么,@MartijnPieters先前的答案是伟大的(一如既往),只是不明白什么是一个严重的用例,给你的例子。 –