【发布时间】:2018-07-04 22:00:24
【问题描述】:
在开发一个项目时,我在 Python 中发现了一个奇怪的错误。 例如:
#Python 2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:19:30) [MSC v.1500 32 bit (Intel)] on win32
variable = "Hello_1"
list = ["This is a variable -> ",variable]
print list #-> ["This is a variable -> " , "Hello_1"]
现在,我将变量修改为新值。所以,我想当改变变量的值时,我会在列表中看到新的值
variable = "Hello_2"
print list #-> ["This is a variable -> " , "Hello_1"]
但是,输出和第一次一样吗?有人知道怎么解决吗?
【问题讨论】:
-
列表中的
variable是副本;因为它是原始类型,所以它是按值复制的,而不是“引用”,就好像它是一个对象一样。另外,不要命名您的list...列表... -
列表和变量之间没有动态链接。定义列表后,对变量的任何更改都不会反映回列表。
-
总结一下:这不是错误。一般经验法则:如果您认为在底层编程语言中发现了错误,那么您很可能没有:首先检查您的代码和您的理解:)
-
@bedwyr 是的,但一开始就假设它是一个错误可能会成为试图了解正在发生的事情并最终导致假设这是一个误解的动机:)
-
@Alfe,同意激励理解是一件好事。也就是说,我见过很多知识较少的开发人员认为语言中存在问题,然后开始尝试解决它:D
标签: python