x = y在python中是什么意思?

时间:2014-04-12 19:43:24

标签: python python-2.7

由于我在阅读有关实际和正式论证时遇到的某个例子,因此提出了这个问题。设x和y为2个不可迭代的变量

def fun(y):
    x=y
    x=3

y=5
fun(y)
print y 
#yields 5 and hence I have been led to believe that 2 separate copies of x and y exist wherein if a change is made to x ,nothing is reflected in y.

但是如果y是一个列表并且要在函数中更改一个值,那么更改也会反映在函数外部。

def func(a):
    x = a
    x[0]="abhi"

a = ["ari", "gold", "silver"]
func(a)
print a

 # yields ["abhi", "gold", "silver"]

为什么在列表和常规变量中x = y的定义存在差异?

2 个答案:

答案 0 :(得分:4)

这一行:

x=y

...只是一项说明:将y的值存储在名为x的新变量中。这是一项多余的任务,因为在下一行中,您将x的值重新指定为新值。

为什么你认为它应该改变了y的价值?分配存储左侧变量中=右侧的任何值,所以很明显我们在第一次分配后从未修改过y

答案 1 :(得分:0)

您正在为x重新分配新数据。

x=y不是要维护的公式,它只是执行将x的值替换为y的相同值的操作

我能想到的唯一一个案例就是这个例子。

class test:
    a = "entity"

>>> t1 = test()
>>> t1.a
'entity'
>>> test.a = "no_name"
>>> t1.a
'no_name'

在这种情况下,当您从t1创建test时,t1.a "" 基类值,所以当我更改test.a的值,t1.a仍会指向test.a位置。

但是,只要您为t1 a分配新值,就会阻止此操作。这是因为它现在将遵循自己的数据。

>>> t1.a = "yes name"
>>> test.a
'no_name'
>>> t1.a
'yes name'
>>>