|
发表于 2023-5-31 14:11:33
|
显示全部楼层
当然可以。下面我将给出一个列表(可变类型)作为参数的函数调用示例:
- def change_list(my_list):
- my_list.append(4)
- print("在函数内部修改后: ", my_list)
- original_list = [1, 2, 3]
- print("原始列表: ", original_list)
- change_list(original_list)
- print("函数修改后的列表: ", original_list)
复制代码
在这个例子中,我们首先定义了一个列表 original_list ,然后把它作为参数传递给 change_list 函数。在 change_list 函数内部,我们向列表添加了一个元素 4 。然后在函数外部,我们再次打印出 original_list 。
运行这段代码,输出结果会是:
- 原始列表: [1, 2, 3]
- 在函数内部修改后: [1, 2, 3, 4]
- 函数修改后的列表: [1, 2, 3, 4]
复制代码
这说明即使在函数内部对 my_list 进行了修改, original_list 也被改变了。这是因为 original_list 和 my_list 都指向同一个列表对象,对这个列表对象的修改在所有引用它的地方都可见。
相反,如果我们传递的是一个不可变类型(如整数、字符串等),则不会出现这种情况:
- def change_num(my_num):
- my_num += 1
- print("在函数内部修改后: ", my_num)
- original_num = 10
- print("原始数字: ", original_num)
- change_num(original_num)
- print("函数修改后的数字: ", original_num)
复制代码
这段代码的输出结果会是:
- 原始数字: 10
- 在函数内部修改后: 11
- 函数修改后的数字: 10
复制代码
在这个例子中,尽管我们在函数内部对 my_num 进行了修改,但 original_num 的值并没有发生改变。这是因为整数是不可变的,当我们对 my_num 进行加法操作时,实际上是创建了一个新的整数对象,而 original_num 仍然指向原来的整数对象。 |
|