存在问题的代码
期待输出结果为ap=['a', 'b']
,但实际输出结果为['a']
ap = ['a']
def func(ap):
ap = []
ap.append('b')
print(ap)
输出结果为:
['a']
正确代码
ap = ['a']
def func(ap):
ap.append('b')
print(ap)
输出结果为:
['a', 'b']
问题分析
函数内重新初始化了一个引用变量ap,函数内的这个局部引用变量ap在函数执行完后就被删除掉了,回到上一层,全局变量ap并没有被修改。
只有在函数内部不重新赋一个新的引用值,才可以实现对传入引用的附加修改。