#First
x = 9
y = x
x = 18
print(y)
#Second
S = {1,3,4,5,6}
T = S
T.remove(5)
print(S)
Run Code Online (Sandbox Code Playgroud)
第一:结果是9
秒:结果是{1,3,4,6}
首先,y的变化不会改变y.在第二个时刻,S由T的变化改变.我想知道原因.先感谢您!=)
这是一个非常常见的问题.对于Python,阅读语言参考的这一部分很有帮助.
简而言之,在Python中,您将名称绑定到对象.
在第一个示例中,您将名称绑定到x其值为整数9的y对象.然后绑定到同一个对象.接下来,绑定到x其值为整数18的对象.绑定的对象y仍然是值为9的对象,因此打印9.
在第二个示例中,将set对象绑定到S.然后将同一个对象绑定到T.代码T.remove(5) 改变了绑定到T的对象,T是绑定到S的同一对象.这就是为什么当您检查时S,您会看到所做的更改T,因为名称S和T绑定到完全相同的对象.
在图片中:
x = 9
x -----------> 9
y = x
x -----------> 9
^
|
y -------------+
x = 18
x -----------> 18
y ------------> 9
Run Code Online (Sandbox Code Playgroud)
看到y没改变.为什么不?因为我绑定x了一个新对象.但我没有改变y必然的事情.现在让我们看看第二个例子
S = {1, 3, 4, 5, 6}
S -----------> 1 3 4 5 6
T = S
S -----------> 1 3 4 5 6
^
|
T -------------+
T.remove(5)
S -----------> 1 3 4 6
^
|
T -------------+
Run Code Online (Sandbox Code Playgroud)
绑定到S更改的对象.注意我没有说S改变了!我从未改变过绑定; S并且T仍然指向同一个对象.理解名称和绑定到它们的对象之间的区别非常重要.
还要注意,我没有说"变量"这个词.:)
| 归档时间: |
|
| 查看次数: |
174 次 |
| 最近记录: |