python - 2.7和3.5之间的变量行为

时间:2016-11-02 11:27:46

标签: python python-2.7 python-3.x variables scope

所以我只能看到一些我无法理解的原因

我确实理解总会有更好的方法来完成我在下面尝试做的事情 - 但我有兴趣知道这种特殊行为而不是替代解决方案

下面的代码在python 3.5上 - [注意我有一个值为21的x,并且在列表推导中使用相同的值来创建该值列表,我的理解是" x"列表中使用的只是作为指向迭代str(values)的指针,我的假设似乎很好用python 3.5]

>>> x = 21
>>> y = 6
>>> value = x * y
>>> value_as_list = [ int(x) for x in str(value) ]
>>> x
21
>>> y
6
>>> value
126
>>> 

现在在python 2.7

>>> x = 21
>>> y = 6
>>> value = x * y
>>> value_as_list = [ int(x) for x in str(value) ]
>>> x
'6'
>>> y
6
>>> value
126
>>> 

因为我使用了相同的变量" x"在我的列表理解中 - 我现在可以看到" x"价值变为' 6'而不是21 [我猜它是126的最后一个]

为什么当x被认为是不可变的时候会发生这种情况,即使我明确地将任何内容分配给" x"在我的列表理解中?

这可能会帮助我理解我应该做的事情吗?

0 个答案:

没有答案