因为要面试EMC的实习,之前完全没有接触过Python,只有两天时间准备,遇到所有编程语言都会有的问题,参数传递问题。
经过自己试验以及在网上查阅资料总结如下:
Python既是值传递也是引用传递。在类似a=b的赋值过程中,传递的是引用,也就是a与b指向同一个地址,如果a改变那么b的值也相对改变。
函数参数传递:如果参数是可变对象如列表、字典,则为引用传递,也就是说会改变原有值。
例如:函数change(a):
a[1]='a'
x=[1,'']
change(x)
结果为x=[1,'a']
可见直接改变列表的内容
但是有个容易产生误解的地方 如果函数是change(a):
a=[10]
x=[1]
change(x)
结果为x=[1]
可见没有改变列表内容,这是什么原因呢,上面的函数等价于x=[1], a=x,a=[10],这里很明显x的值不会变的,因为a指向了新的地址
如果参数是不可变对象如数字、字符或者元组,则为值传递,则不会改变原值。