gpt4 book ai didi

python - Python 中赋值运算符和复合运算符的区别

转载 作者:行者123 更新时间:2023-12-01 11:04:38 25 4
gpt4 key购买 nike

<分区>

请看下面的代码

def double(arg):
print("Before: ", arg)
arg = arg * 2
print("After: ", arg)

我正在学习 Head first Python,然后我来到了他们讨论按值传递和按引用传递的这一部分。如果我们以列表作为参数调用上述函数,例如:

num = [1,2,3]
double(num)
print(num)

输出是:-

Before:  [1, 2, 3]
After: [1, 2, 3, 1, 2, 3]
[1, 2, 3]

考虑到函数 double 中的 arg 是一个新的对象引用,这看起来不错。所以num的值没有改变。

但是,如果我使用复合运算符而不是赋值运算符,情况就会有所不同,如下所示:

def double(arg):
print("Before: ", arg)
arg *= 2
print("After: ", arg)

num = [1,2,3]
double(num)
print(num)

我得到的输出是:

Before:  [1, 2, 3]
After: [1, 2, 3, 1, 2, 3]
[1, 2, 3, 1, 2, 3]

为什么会这样?我曾经认为 a*=2 和 a = a*2 是一样的。但是这里发生了什么?

谢谢

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com