之前只是简单会用,现在重新按照官网的 Tutorial 来学
python 中一切变量都是引用(指针)
对于内置类型来说,有不可变类型和可变类型之分,不可变类型的意思是不能重新赋值,需要重新生成一个新对象,因此使用 operator= 相当于是做深拷贝。可变类型则不同, operator= 只是浅拷贝。
可变对象: list
, dict
, set
不可变对象:tuple
, string
, int
, float
, bool
最简单的例子:
def func(ll):
ll.append(42)
ll = [1, 2]
func(ll)
print(str(ll)) #输出 [1, 2, 42]
虽然函数传参是 pass by value,但是那只是指针值的value
对于 list 来说,使用 [:] 可以构建一个全新的 deep copy。