§對於絕大多數情況下,在函數內部直接修改形參的值不會影響實參。例如:
>>> def addOne(a):
print(a)
a += 1
print(a)
>>> a = 3
>>> addOne(a)
3
4
>>> a
3
§在有些情況下,可以通過特殊的方式在函數內部修改實參的值,例如下面的代碼。
>>> def modify(v): #修改列表元素值
v[0] = v[0]+1
>>> a = [2]
>>> modify(a)
>>> a
[3]
>>> def modify(v, item): #為列表增加元素
v.append(item)
>>> a = [2]
>>> modify(a,3)
>>> a
[2, 3]
§也就是說,
如果傳遞給函數的是可變序列,並且在函數內部使用下標或可變序列自身的方法增加、刪除元素或修改元素時,修改后的結果是可以反映到函數之外的,實參也得到相應的修改。
>>> def modify(d): #修改字典元素值或為字典增加元素
d['age'] = 38
>>> a = {'name':'Dong', 'age':37, 'sex':'Male'}
>>> a
{'age': 37, 'name': 'Dong', 'sex': 'Male'}
>>> modify(a)
>>> a
{'age': 38, 'name': 'Dong', 'sex': 'Male'}