一. 值传递和引用传递理论
# 本质: python中独有的对可变不可变类型的区分.
# 值传递
如果函数收到的是一个不可变对象(数字、字符或元组)的引用,就不能直接修改原始对象--相当于通过‘值传递’来传递对象。
# 引用传递
如果函数收到的是一个可变对象(字典、列表)的引用,就能修改对象的原始值--相当于‘传引用’来传递对象
二. 值传递和引用传递代码
# 值传递 -> 不可变类型
name = 'yang'
def by_val(obj):
name = 'cheng'
return name
name1 = by_val(name)
print(name1 is name) # False
print(name) # yang
print(name1) # cheng
# 引用传递 -> 可变类型
info = {'age': 18}
def by_ref(obj):
"""传地址"""
obj['age'] = 19
return obj
info1 = by_ref(info)
print(info1 is info) # True
print(info) # {'age': 19}
print(info1) # {'age': 19}
理论参考: https://www.cnblogs.com/spring-haru/p/9320493.html
代码参考: https://www.cnblogs.com/shizhengwen/p/6972183.html