Dro*_*ans 1 python terminology list definition
我正在寻找适当的术语来描述集合对象的这个众所周知的属性,更重要的是,当变量用于引用它们的元素时,堆栈图的变化方式如下:
>>> x = 5
>>> l = [x]
>>> x += 1
>>> l
[5]
>>> x
6
Run Code Online (Sandbox Code Playgroud)
列表对变量执行的操作的名称是什么,x以防止它被绑定到原始值的任何更改x?屏蔽?共享结构?列表绑定?使用这些条款的Google搜索没有任何回复.
这是一个更详细的例子(但遗憾的是没有定义).

列表对变量x执行的操作的名称是什么,以防止它绑定到x的原始值的任何更改?屏蔽?共享结构?列表绑定?使用这些条款的Google搜索没有任何回复.
因为列表没有做任何事情,并且它不是集合的属性.
在Python中,变量是名称.
>>> x = 5
Run Code Online (Sandbox Code Playgroud)
这意味着:x应该是值的名称5.
>>> l = [x]
Run Code Online (Sandbox Code Playgroud)
这意味着:l应该是通过获取xnames(5)的值,并使用该值([5])创建一个元素列表而得到的值的名称.
>>> x += 1
Run Code Online (Sandbox Code Playgroud)
x += 1被重写到x = x + 1这里,因为整数是不可变的.你不能让这个值5增加1,因为那样就会5了.
因此,这意味着:x应该停止成为当前名称的名称,并开始成为数学表达式产生的值的名称x + 1.即,6.
这就是参考语义的发生方式.没有理由期望列表的内容发生变化.
现在,让我们看看价值语义会发生什么,用一种假设的语言看起来就像Python,但处理变量的方式与它们在C中处理的方式相同.
>>> x = 5
Run Code Online (Sandbox Code Playgroud)
这现在意味着:x是一块内存的标签,用于表示数字的表示5.
>>> l = [x]
Run Code Online (Sandbox Code Playgroud)
这现在意味着:l是一块内存的标签,它包含一些列表结构(可能包括一些指针等),它将以某种方式初始化,以便它表示一个包含1个元素的列表,该列表具有值5(从的x变量).它不能被x逻辑地包含,因为它是一个单独的变量,我们有价值语义; 所以我们存储一份副本.
>>> x += 1
Run Code Online (Sandbox Code Playgroud)
现在这意味着:增加x变量中的数字; 现在是6.该列表再次不受影响.
无论您的语义如何,都不能以这种方式影响列表内容.期望列表内容发生变化意味着您的解释不一致.(如果您将代码重写为,这将变得更加明显l = [5]; x = l[0]; x += 1.)