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))

运行结果:

 
原文地址:https://www.cnblogs.com/annatest/p/13631002.html