如何在python3+中创建自动更新的变量?

2024-04-25 06:44:10 发布

您现在位置:Python中文网/ 问答频道 /正文

代码模型和预期结果:

X = 10
Y = (X-10)/2
print(Y)
X = 12
print(Y)

我想先打印“0”,然后打印“1”,但显然Y不是动态分配的。你知道吗

我曾尝试使用lambda函数(laY = lambda i: (X-10)/2)来获得此功能,但我一直得到<function <lambda> at 0x7f5f6356eea0>。你知道吗

这只是为了避免需要运行一个函数或在任何改变X值的函数末尾重新定义Y

提前谢谢!你知道吗


Tags: lambda函数代码模型功能定义functionat
3条回答

I have tried utilizing lambda functions (a la Y = lambda i: (X-10)/2)

您需要调用函数:

print(Y())

至于让print(Y)打印更新后的值?基本上是不可能的,而且存在的变通办法根本不值得。只是要明确地重新计算值。你知道吗

或者,也可以使用属性:

class P:
    def __init__(self,x):
        self.x = x
        self.y = y

    @property
    def x(self):
        return self.__x

    @property
    def y(self):
        return (self.__x-10)/2

    @x.setter
    def x(self, x):
        self.__x = x

但是,您必须通过p类的实例访问这些值。你知道吗

p = P()
p.x = 10
print(p.y)
p.x = 12
print(p.y)

你需要给lambda打电话:

print(Y())

将lamda赋给变量本质上与定义函数相同:

def Y():
    return (X-10)/2

你不能用普通变量做你想做的事。分配一个变量会将值复制到其中,它不会创建对所用表达式的引用。你知道吗

相关问题 更多 >