python中的变量调用和参数传递
首先、python与c,c++等语言不同,在定义变量时,创建的是指向等号右边对象的引用,因此,若两个变量指向的对象相同,则两个引用也相同。举个例子来看:
a=[12]
b=a
print(f"a与b的引用相同吗?{a is b}")
结果如下所示
a与b的引用相同吗?True
在变量修改时,两个引用会同时修改
a.append(1)
print(b)
结果如下
[12, 1]
为什么会产生如上述所示的现象?
是因为python的内部一切皆为对象,包括每个数值,字符,列表,函数等等,在定义a,b的时候,便指向了同一个对象,因此修改该对象,变量a,b内容同时改变。
上述代码稍作修改,则
a=112
b=112
print(f"a与b的引用相同吗?{a is b}")
结果如下
a与b的引用相同吗?True
再改变a,b不会同时改变,因为a指向的改变后的对象,b指向的还是改变之前的对象
a+=1
print(f"a与b的引用相同吗?{a is b}")
print(a,b)
a与b的引用相同吗?False
113 112