所以我对 Python 和一般编码还很陌生,但是我在处理一些二分的东西时遇到了一个问题。我有这个代码:
a = 1
b = 2
c = 0
fa = a**3-a-2
fb = b**3-b-2
fc = c**3-c-2
c += 2
print(fc)
问题是,当我运行它时,'c' 变量发生变化,但 'fc' 保持不变并输出 -2,而它应该输出 4。无论我尝试什么,fc 始终保持不变,更新 c 不会改变 fc,即使我相信它应该?
最佳答案
Python 将表达式的结果存储在 fa
、fb
和 fc
中,而不是表达式本身:
>>> a = 1
>>> b = 2
>>> c = 0
>>> fa = a**3-a-2
>>> fb = b**3-b-2
>>> fc = c**3-c-2
>>> fa
-2
>>> fb
4
>>> fc
-2
>>> type(fc)
<class 'int'>
如果您想重新运行表达式来更改变量,请创建函数。对于单个表达式,您可以使用 lambda
expression 创建函数对象:
fa = lambda: a**3-a-2
fb = lambda: b**3-b-2
fc = lambda: c**3-c-2
这 3 个函数期望 a
、b
和 c
存在于其父作用域中。现在更改c
,然后调用该函数将重新运行表达式:
c += 2
print(fc()) # note the (), calling the function
演示:
>>> fa = lambda: a**3-a-2
>>> fb = lambda: b**3-b-2
>>> fc = lambda: c**3-c-2
>>> fa
<function <lambda> at 0x10979dd90>
>>> fb
<function <lambda> at 0x1097b1e18>
>>> fc
<function <lambda> at 0x1097b1ea0>
>>> fc() # calling a function executes the expression, each time
-2
>>> c += 2
>>> fc()
4
关于Python 变量和方程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34104435/