1. 问题描述
python没有C++中的指针和引用这些概念,直接传入变量不能实现类似引用参数的功能。
def incr_num(num):
num += 1
num = 0
num
0
incr_num(num)
num
0
这是因为:
2. python中的整数都有其固定id
>>> a=5
>>> b=5
>>> id(a)
1426024640
>>> id(b)
1426024640
>>> a+=1
>>> a
6
>>> id(a)
1426024656
>>> b
5
>>> id(b)
1426024640
>>> c=6
>>> id(c)
1426024656
浮点数的id在做操作之后id也要变
>>> a=2.1
>>> b=2.1
>>> id(a)
48419408
>>> id(b)
48422128
>>> a+=1
>>> id(a)
48421328
但是数组的id不变
>>> aa=[1]
>>> bb=[1]
>>> id(aa)
49570440
>>> id(bb)
49571200
>>> aa[0]+=1
>>> id(aa)
49570440
3. python实现传值参数
所以我们可以这样实现引用参数,让变量变成数组形式
def incr_list(list):
list[0] += 1
list = [0]
list[0]
0
incr_list(list)
list[0]
1