欢迎访问宙启技术站
智能推送

Python函数中的参数传递方式及实例讲解

发布时间:2023-07-06 01:25:31

在Python中,参数传递的方式有两种:传值和传引用。

1. 传值:

当传递一个不可变对象作为参数时,会采用传值的方式。这意味着在函数内部对参数进行修改不会影响到外部的对象。

例如:

   def change_value(x):
       x = 5

   a = 10
   change_value(a)
   print(a)  # 输出:10
   

在上面的例子中,我们将a作为参数传递给change_value函数。在函数内部,将参数x的值改为5,然而在函数外部打印a的值仍然是10。这是因为在函数内部,新创建了一个名为x的变量,并将其指向了一个新的对象5,并没有修改外部的变量a

2. 传引用:

当传递一个可变对象作为参数时,会采用传引用的方式。这意味着在函数内部对参数进行修改会同时修改外部的对象。

例如:

   def change_list(lst):
       lst.append(4)

   my_list = [1, 2, 3]
   change_list(my_list)
   print(my_list)  # 输出:[1, 2, 3, 4]
   

在上面的例子中,我们将my_list作为参数传递给change_list函数。在函数内部,我们使用append方法向lst列表中添加了一个元素4。由于传递的是可变对象,所以对参数的修改同时也改变了外部的对象my_list

不过需要注意的是,虽然传引用会修改外部的可变对象,但是如果在函数内部重新给参数赋予一个新的对象,那么该对象只在函数内部有效,不会影响到外部的对象。

例如:

def change_list(lst):
    lst = [4, 5, 6]

my_list = [1, 2, 3]
change_list(my_list)
print(my_list)  # 输出:[1, 2, 3]

在上面的例子中,我们在函数内部给参数lst重新赋值了一个新的列表[4, 5, 6],然而在函数外部打印my_list的值仍然是[1, 2, 3]。这是因为在函数内部,新创建了一个名为lst的变量,并将其指向了一个新的对象[4, 5, 6],并没有修改外部的变量my_list

总结起来,Python中的参数传递可以通过传值和传引用两种方式进行,传值用于不可变对象,传引用用于可变对象。在函数内部修改参数不会影响到外部的不可变对象,但会影响到外部的可变对象。同时,如果在函数内部重新给参数赋予一个新的对象,那么该对象只在函数内部有效,不会影响到外部的对象。