相关疑难解决方法(0)

list .__ iadd__和list .__ add__的不同行为

考虑以下代码:

>>> x = y = [1, 2, 3, 4]
>>> x += [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4, 4]
Run Code Online (Sandbox Code Playgroud)

然后考虑这个:

>>> x = y = [1, 2, 3, 4]
>>> x = x + [4]
>>> x
[1, 2, 3, 4, 4]
>>> y
[1, 2, 3, 4]
Run Code Online (Sandbox Code Playgroud)

为什么这两个有区别?

(是的,我试着寻找这个).

python list

12
推荐指数
2
解决办法
4936
查看次数

Python3多重赋值和内存地址

看完这个这个,这是非常相似,我的问题,我仍然无法理解以下行为:

a = 257
b = 257
print(a is b) #False
a, b = 257, 257
print(a is b) #True
Run Code Online (Sandbox Code Playgroud)

打印时id(a),id(b)我可以看到在单独的行中分配值的变量具有不同的ID,而对于多个赋值,两个值具有相同的id:

a = 257
b = 257
print(id(a)) #139828809414512
print(id(b)) #139828809414224
a, b = 257, 257
print(id(a)) #139828809414416
print(id(b)) #139828809414416
Run Code Online (Sandbox Code Playgroud)

但是,通过说多个相同值的赋值总是创建指向同一个id的指针,从而解释这种行为是不可能的:

a, b = -1000, -1000  
print(id(a)) #139828809414448
print(id(b)) #139828809414288
Run Code Online (Sandbox Code Playgroud)

是否有一个明确的规则,它解释了变量何时变得相同id而不是?

编辑

相关信息:此问题中的代码以交互模式运行(ipython3)

python python-3.x multiple-assignment

10
推荐指数
1
解决办法
301
查看次数

打印Python中的值传递?

下面给出了这个课程,这将打印20_20.现在直到第5行代码相同,我不希望T.a当我改变值时改变值T1.a.怎么解决?

class Test: 
    def __init__(self, val): 
        self.a = val 

T = Test(10) 
T1 = T 
T1.a = 20 
print T.a + '__' + T1.a
Run Code Online (Sandbox Code Playgroud)

预期产量为10_20.

python python-2.7 python-3.x

-3
推荐指数
1
解决办法
54
查看次数