在Python中,我试图使'number'
与x
指向列表中完全相同的数字(这可能听起来很愚蠢,但这是我试图实现的简化版本)。
但是,由于某种原因,索引假设x
仍然是1而不是2(它在x += 1
之后)
list = [0, 1, 2, 3, 4]
x = 1
number = list[x]
print(number)
x += 1
print(number)
print(x)
有人知道我哪里做错了吗?
我对这一切都很陌生。
我期望输出1 2 2
,但我得到了1 1 2
在Python中,我试图使'number'
与x
指向列表中完全相同的数字(这可能听起来很愚蠢,但这是我试图实现的简化版本)。
但是,由于某种原因,索引假设x
仍然是1而不是2(它在x += 1
之后)
list = [0, 1, 2, 3, 4]
x = 1
number = list[x]
print(number)
x += 1
print(number)
print(x)
有人知道我哪里做错了吗?
我对这一切都很陌生。
我期望输出1 2 2
,但我得到了1 1 2
5条答案
按热度按时间uhry853o1#
正如其他人指出的那样,重新分配
x
不会自动重新分配number
。一般来说,有两个变量需要同时重新赋值,这很容易让你感到困惑--如果你在更新了一个变量后忘记更新另一个变量,你的程序中很可能会有一个bug,然后你需要到处寻找,找出这两个变量在什么时候分开了。
一个更好的方法通常是有一个单一的值(一个单一的“真理来源”),然后使用一个函数,将自动计算出相关的值。在OOP上下文中,你经常通过定义一个
@property
来做到这一点,但你也可以用一个普通的旧函数来做到这一点:打印:
请注意,由于
number
是一个函数,因此需要调用它(即number()
)以获得期望值。调用该函数会导致numbers[x]
被重新计算,从而得到number
的更新值。mitkmikd2#
gt0wga4j3#
在这里,我们确实增加了x的值,但是变量
number
仍然有1。我们必须再次重新分配它以获得值2。代码:
输出:
注意:请不要使用
list
作为变量名,因为它会掩盖内置名称list
。s8vozzvw4#
代码如下:
ktecyv1j5#
在分配
number
后更改x
不会更改number
。为了获得预期的结果,您必须在x
更改后重新分配number
:编辑:不应该使用
list
作为变量名