我想要的是这个:
>>> x = 2
>>> y = x+10
>>> print(y)
12
>>> x = 30
>>> print(y) # Whatever x is, y is that number x, plus 10.
40
这种因变量'怎么可能?用Python声明?
答案 0 :(得分:4)
我知道在标准库Python中执行此操作的唯一方法是使用属性,以便每次访问属性时计算适当的值:
class Thing(object):
def __init__(self, x, y_add):
self.x = x
self.y_add = y_add
@property
def y(self):
return self.x + self.y_add
使用中:
>>> t = Thing(2, 10)
>>> t.x
2
>>> t.y
12
>>> t.x = 3
>>> t.y
13
否则,您必须进行函数调用(y()
而非y
)或使用sympy
之类的内容。
答案 1 :(得分:1)
您可以使用功能而不是变量来执行此操作。
def y(x):
return x + 10
因此print(y(x))
会提供当前值x
加上十的输出。
然而,纯粹使用变量无法实现此目的。只有在明确告诉变量时,变量才会更改它们的值。
答案 2 :(得分:0)
Python中的变量是不可变的,这意味着它们随着时间的推移不变或无法更改,除非被告知引用其他内容。换句话说,使用可用的数据类型是不可能的。 Python就是这样的一个原因 - 它提高了速度和可表达性。如果没有可变数据类型,可能有一种方法可以实现您想要做的事情。
如果你坚持使用可变数据类型,那么有些语言允许这样做,并且可能有一个可导入的模块或类定义允许这样做,但它非常不具有Pythonic。
请参阅:https://mail.python.org/pipermail/tutor/2000-August/001976.html