代码模拟和预期结果:
X = 10
Y = (X-10)/2
print(Y)
X = 12
print(Y)我想要打印"0“,然后再打印"1",但显然没有动态分配Y。
我尝试过使用lambda函数( la Y = lambda i: (X-10)/2) )来获得这个功能,但是我一直在获取<function <lambda> at 0x7f5f6356eea0>。
这只是为了避免在任何更改X值的函数末尾运行函数或重新定义Y。
提前感谢!
发布于 2017-08-08 19:29:08
我尝试过使用lambda函数( la
Y = lambda i: (X-10)/2))。
您需要调用该函数:
print(Y())如何让print(Y)打印更新的值?大多数情况下是不可能的,而现有的解决办法根本不值得。只需明确地说明如何重新计算值。
发布于 2017-08-08 19:29:17
你得打电话给兰博达:
print(Y())将lamda分配给变量本质上与定义函数是一样的:
def Y():
return (X-10)/2你不能用普通变量做你想做的事。分配变量会将值复制到变量中,它不会创建对所使用表达式的引用。
发布于 2017-08-08 19:32:17
您需要为您的lambda函数提供x参数。在你的情况下,这是10或12。
y = lambda x: (x-10)/2
print(y(10))
>>> 0.0https://stackoverflow.com/questions/45576565
复制相似问题