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

Python函数中的参数传递方式和含义

发布时间:2023-07-05 22:27:41

在Python中,参数传递方式有两种:传值调用和传引用调用。这两种方式决定了在函数调用时,如何将参数传递给函数。

1. 传值调用:

在传值调用中,形参接收的是实参的一个副本,函数使用这个副本进行操作,不会影响到实参本身。这意味着函数内对形参的修改不会影响到实参。

示例:

   def func(x):
       x = x + 1
       print('内部:', x)
   
   a = 1
   func(a)
   print('外部:', a)
   

输出:

   内部: 2
   外部: 1
   

在这个例子中,函数func接收一个参数x,将其加1后输出。然后在函数外部调用func(a),并输出实参a的值。可以看到,虽然函数内部修改了形参x的值,但并没有改变实参a的值。

2. 传引用调用:

在传引用调用中,形参接收的是实参的引用,即实参的内存地址。因此,函数内部对形参的修改将会影响到实参。

示例:

   def func(lst):
       lst.append(4)
       print('内部:', lst)
   
   a = [1, 2, 3]
   func(a)
   print('外部:', a)
   

输出:

   内部: [1, 2, 3, 4]
   外部: [1, 2, 3, 4]
   

在这个例子中,函数func接收一个列表参数lst,将数字4追加到列表中后输出。然后在函数外部调用func(a),并输出实参a的值。可以看到,函数内部对形参lst的修改同样影响到了实参a

在函数调用中,默认参数传递方式为传值调用,而可变对象作为参数时则使用传引用调用。可变对象包括列表、字典等,而不可变对象包括数字、字符串等。这是因为对于可变对象,函数内部可以修改对象的值,而对于不可变对象,函数内部不能修改对象的值。

对于传值调用,虽然不能直接修改对象的值,但可以通过函数返回值来达到类似的效果。

总结起来,Python中的参数传递方式有传值调用和传引用调用两种。传值调用传递的是实参的副本,对形参的修改不会影响实参本身,而传引用调用传递的是实参的引用,对形参的修改会影响实参。默认参数传递方式为传值调用,而可变对象作为参数时使用传引用调用。