Python中List作为参数是怎么传递的?
参考答案:
在Python中,当你将一个列表(List)作为参数传递给一个函数时,你实际上是在传递这个列表的引用,而不是整个列表的副本。这意味着如果你在函数内部修改了列表,那么原始的列表也会被修改。这是因为Python中的对象(包括列表)是通过引用传递的,而不是通过值传递的。
以下是一个示例,演示了如何在函数内部修改列表,并影响原始的列表:
def modify_list(my_list):
my_list.append(4) # 修改列表
return my_list
original_list = [1, 2, 3]
modified_list = modify_list(original_list)
print(original_list) # 输出: [1, 2, 3, 4]
print(modified_list) # 输出: [1, 2, 3, 4]
在这个例子中,modify_list
函数接收一个列表作为参数,然后在列表的末尾添加了一个新元素。因为这个列表是通过引用传递的,所以原始的original_list
也被修改了。因此,当你打印original_list
和modified_list
时,你会看到它们都是相同的,并且都包含了新添加的元素4。
需要注意的是,尽管列表本身是通过引用传递的,但如果你创建一个新的列表并将它赋值给函数内部的参数,那么这个新的列表并不会影响原始的列表。这是因为在这个情况下,你实际上是创建了一个新的列表对象,并将其赋值给了参数,而不是修改原始的列表对象。例如:
def create_new_list(my_list):
my_list = [5, 6, 7] # 创建一个新的列表并赋值给参数
return my_list
original_list = [1, 2, 3]
new_list = create_new_list(original_list)
print(original_list) # 输出: [1, 2, 3]
print(new_list) # 输出: [5, 6, 7]
在这个例子中,create_new_list
函数创建了一个新的列表[5, 6, 7]
,并将其赋值给了参数my_list
。这个新的列表并不会影响原始的original_list
,因为my_list
现在引用了一个新的列表对象。因此,当你打印original_list
和new_list
时,你会看到它们是不同的,并且original_list
并没有被修改。