定义一个依赖于另一个的变量

时间:2016-01-09 14:09:11

标签: python python-3.x

我想要的是这个:

>>> x = 2
>>> y = x+10 
>>> print(y)
12

>>> x = 30
>>> print(y)   # Whatever x is,  y is that number x, plus 10.
40

这种因变量'怎么可能?用Python声明?

3 个答案:

答案 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