Python:变量的副本
有没有一种方法可以复制一个变量,这样当变量“a”的值改变时,它就可以将自己复制到变量“b”中 范例Python:变量的副本,python,variables,copy,Python,Variables,Copy,有没有一种方法可以复制一个变量,这样当变量“a”的值改变时,它就可以将自己复制到变量“b”中 范例 a='hello' b=a #.copy() or a function that will make a copy a='bye' # Is there a way to make # 'b' equal 'a' without # doing 'b=a' print a print b 我在使用Tkinter库时遇到了一个问题,在这个库中,我有一个存储在列表中的chec
a='hello'
b=a #.copy() or a function that will make a copy
a='bye'
# Is there a way to make
# 'b' equal 'a' without
# doing 'b=a'
print a
print b
我在使用Tkinter库时遇到了一个问题,在这个库中,我有一个存储在列表中的checkbutton,我正在尝试获取它所包含的变量
但是需要大约5行代码才能到达变量
当checkbutton变量发生变化时,是否有一种保存该变量副本的方法?您询问是否可以创建对某个变量的引用并保存在另一个变量中。不,这是不可能的。请参见您正在探索Python如何处理引用的示例。赋值只是将引用绑定到右侧的对象。因此,这有点微不足道:
a = 'foo'
b = a
print b is a #True -- They *are the same object*
但是,一旦您这样做:
b = 'bar'
b is a #False -- they're not longer the same object because you assigned a new object to b
现在,对于可变的对象,这变得非常有趣:
在这种情况下,a
会发生变化,因为b
和a
引用了相同的对象。当我们对b
进行更改时(我们可以这样做,因为它是可变的),同样的更改会出现在a
上,因为它们是相同的对象
因此,要回答您的问题,您不能直接这样做,但如果您使用可变类型(如列表)来存储所携带的实际数据,您可以间接这样做
在使用Python代码时,理解这一点非常重要,而且这不是许多语言的工作方式,因此在真正理解它之前认真思考/研究这一点是值得的。简而言之,使用简单的值赋值,您无法做到这一点。如你所见:
a=4
b=a
a=5
>>> print b
4
但是,对于列表等可变对象,您可以这样做。因此:
a=[1]
b=a
a.append(2)
>>> print a
[1,2]
>>> print b
[1,2]
根据您要执行的操作,您可能需要检查
这允许您拥有一个主对象,然后在主对象消失后,有几个副本将变为无。通过临时列表创建简单变量的独立副本有一种难看的方法:
a = 6;
b = [a][0]
你为什么要那样?只需使用
a
?See I cant的可能重复项。这是我在使用tkinter库时面临的一个问题,我有一个存储在列表中的checkbutton,我试图获取它所包含的变量,但需要大约5行代码才能到达该变量。我只是想要一种保存变量副本的方法,当checkbutton变量chagnes@Crispy:那就把这个作为你的问题。我们可以通过实际用例更好地帮助您解决实际问题。这个问题实在太模糊了。我来这里是想找到一种方法来防止第三种情况下的行为(要复制的对象是可变的)。如果其他人想要相同的信息,我最终发现,除了使用copy.copy或copy.deepcopy之外,您还可以使用以下语法来创建新对象并否定原始对象的可变性——当然,如果所需对象可以以这种方式实例化:new_list=list(L)#copy new_dict=dict(olddict)#复制新#set=set(L)#将列表转换为set新#tuple=tuple(L)#将列表转换为tuple
a = 6;
b = [a][0]