Python中函数参数是引用传递(注意不是值传递)。对于不可变类型(数值型、字符串、元组),因变量不能修改,所以运算不会影响到变量自身;而对于可变类型(列表字典)来说,函数体运算可能会更改传入的参数变量。
不可变类型:
In [8]: def fn(a):
...: a=a+2
...: return a
...:
...:
In [9]: a=1
In [10]: fn(a)
Out[10]: 3
In [11]: a
Out[11]: 1
In [12]: a=[1,2]
可变类型:
In [15]: def fn (a):
...: b=a
...: del b[0]
...: return b
...:
...:
In [16]: a=[1,2]
In [17]: fn(a)
Out[17]: [2]
In [18]: a
Out[18]: [2]