打印Python中的值传递?

时间:2015-07-01 07:23:47

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

下面给出了课程,这将打印20_20。现在直到第5行代码相同,我不希望{i}更改if not exists (select name from syscolumns where name = 'emailbody' and id = OBJECT_ID('emailtb') and xtype = 167 and [length] = ??) ALTER TABLE emailtb ALTER COLUMN emailbody nvarchar(max) 的值时更改T.a的值。怎么解决?

T1.a

预期产量为10_20。

4 个答案:

答案 0 :(得分:5)

在第6. T1 = T行中,您告诉python对名​​为T的对象T1进行新的引用。

  

当我改变T1.a的值

时,我不希望T.a的值发生变化

这不能按照你设置的方式完成,因为T和T1指向同一个对象。您可以通过注意T is T1在python解释器中求值为True来看到这一点。

似乎您可能希望实例化2个Test个对象,每个对象都有自己的a属性,因此更改一个对象不会影响另一个对象。

答案 1 :(得分:1)

你想要做的事情可能就是"深度复制" https://docs.python.org/2/library/copy.html

这允许您创建现有对象的副本,而不是引用。在使用对象时,我能想到的是传递值最接近的东西。

答案 2 :(得分:1)

您还可以使用Order模块的copy方法:

copy

有关详细信息,请查看import copy T = Test(20) T1 = copy.copy(T) T1.a = 40 print T.a # Output 20 print T1.a # Output 40 文档,https://docs.python.org/2/library/copy.html

答案 3 :(得分:0)

通过 T1 = T ,你使两者都相同所以如果你改变T1它会影响T,反之亦然。你可以使用复制,深层复制等

if(distance(lat1, lon1, lat2, lon2, K) ==1){
   alert("1000 m");
}

有关可变和不可变对象分配和值更改的更多信息,请参阅此link