python中函数参数传递--引用传递(面试)
python传参数是传值还是传址?
Python中函数参数是引用传递(注意不是值传递)。
- 对于不可变类型(数值型、字符串、元组),因变量不能修改,所以运算不会影响到变量自身;
- 对于可变类型(列表、字典)来说,函数体运算可能会更改传入的参数变量。
1 def selfAdd(a): 2 a += a 3 4 a_int = 1 5 print('a_int的值是:', a_int, ';', 'a_int的id是:', id(a_int)) 6 selfAdd(a_int) 7 print('调用selfAdd之后a_int的值是:', a_int, ';', 'a_int的id是:', id(a_int)) 8 print('**********************************************************************') 9 a_list = [1, 2] 10 print('a_list的值是:', a_list, ';', 'a_list的id是:', id(a_list)) 11 selfAdd(a_list) 12 print('调用selfAdd之后a_list的值是:', a_list, ';', 'a_list的id是:', id(a_list))
运行结果: