首先简单说明一下,Python中按值传递与按引用传递的区别:
按值参数传递是指一个变量的值来取代一个函数参数的做法。
如果这个值在函数代码组中改变,对于调用这个函数的代码来说,其中相应的变量值并不会受到任何影响,可以把这个参数认为是原变量值的一个副本。
按引用参数传递是指对于调用这个函数的代码,会维护这个代码中变量的一个链接(引用)。
如果函数代码组中的变量改变,那么在调用这个函数的代码中,相应的变量值也会改变,可以把这个参数认为是原变量的一个别名。
函数按值调用
def double(arg):
print('Before:', arg)
arg = arg * 2
print('After:', arg)
num = 10
double(num)
print('num:', num)
saying = 'Hello'
double(saying)
print('saying:', saying)
运行上述代码,输出结果如下:
Before: 10
After: 20
num: 10
Before: Hello
After: HelloHello
saying: Hello
分析
每次调用都确认了作为参数传入的值在函数代码组已经改变,但是在函数外部print出来的值仍保持不变。
也就是说,