先说结论:python不允许程序员选择采用传值还是传引用。 如果函数收到的是一个 可变对象 (比如 字典 或者 列表 )的引用,就能修改对象的原始值--相

先说结论:python不允许程序员选择采用传值还是传引用。

  • 如果函数收到的是一个 可变对象 (比如 字典 或者 列表 )的引用,就能修改对象的原始值--相当于通过“传引用”来传递对象。
  • 如果函数收到的是一个 不可变对象 (比如 数字字符 或者 元组 )的引用,就不能直接修改原始对象--相当于通过“传值‘来传递对象。

在函数传值,或函数内部函数引用外部变量时,基本符合这个逻辑,比如:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def test_dect_out():
lvs = {}
num1 = 3

def lan():
lvs['sss'] = 4
num1 = 5
return lvs, num1

print(lvs, num1)
print(lan())
print(lvs, num1)

{} 3
({'sss': 4}, 5)
{'sss': 4} 3

参考文献