1. 准则
- 不可变对象作为函数参数,相当于c系语言的值传递
- 可变对象作为函数参数,相当于c系语言的引用传递
- 一旦函数中遇到=,就会重新开辟一个内存空间,不再对传递过来的参数有影响
2. 代码
# 1.对于不可变str处理
# 不可变对象作为函数参数,相当于c语言中的值传递;
# 所以传递进来的参数值跟本身的值无关
def change_str(param):
param+"2"
# 2.对于可变list处理
# 可变对象作为函数参数,相当于c语言中的引用传递
# 因为传递的是地址,所以对地址的改变会影响到本身
def change_list(param):
param.append("abc")
# 一旦函数中遇到"=",就会重新开辟一个内存空间,
# 不再对传递过来的参数有影响
# 所以本身的lisa不会被覆盖成['a','b','d']
param=['a','b','d']
num = "1"
print(f"num_before = {num}")
# num_before = 1
change_str(num)
print(f"num_after = {num}")
# num_after = 1
lisa = ["1","2"]
print(f"lisa_before = {lisa}")
# lisa_before = ['1', '2']
change_list(lisa)
print(f"lisa_after = {lisa}")
# lisa_after = ['1', '2', 'abc']
本文详细介绍了Python中不可变对象(如字符串)和可变对象(如列表)作为函数参数的区别。对于不可变对象,函数内部的修改不会影响原始值;而对于可变对象,函数内的操作会直接影响到原始对象。通过示例代码展示了如何在函数中改变不可变对象和可变对象,并解释了'='运算符在函数内部的作用。

220

被折叠的 条评论
为什么被折叠?



