def demo1(num, num_list):
num = num + num
num_list = num_list + num_list
print(num)
print(num_list)
print("函数执行完毕")
gl_num = 10
gl_num_list = [1, 2, 3]
demo1(gl_num, gl_num_list)
print(gl_num)
print(gl_num_list)
print("主程序执行完毕")
输出结果
20
[1, 2, 3, 1, 2, 3]
函数执行完毕
10
[1, 2, 3]
主程序执行完毕
可以看出在可变和不可变的类型中:
在进行函数调用时,对传入形参进行赋值操作,并不会修改对实参的引用,而是重新生成了一个新的存储空间给修改的变量
而使用+=操作时
def demo1(num, num_list):
num += num
num_list += num_list # =num_list.extend(num_list)
print(num)
print(num_list)
print("函数执行完毕")
gl_num = 10
gl_num_list = [1, 2, 3]
demo1(gl_num, gl_num_list)
print(gl_num)
print(gl_num_list)
print("主程序执行完毕")
输出
20
[1, 2, 3, 1, 2, 3]
函数执行完毕
10
[1, 2, 3, 1, 2, 3]
主程序执行完毕
+=操作是先加后赋值
然而在对列表进行+=操作时 是调用了列表的extend方法 对列表还是同一个引用 可以修改外部列表的值