admin 管理员组

文章数量: 1086019


2024年1月13日发(作者:easybcd怎么引导linux)

python中的函数参数传递

在Python中,函数参数传递是指将参数传递给函数的过程。Python中的函数参数传递有两种方式:传值调用和传引用调用。

1.传值调用(call by value):

传值调用是指将参数的值复制一份给函数中的形参,函数内部对形参的修改对实参没有影响。这是因为传值调用的方式会复制一份参数的副本,函数对参数进行操作时操作的是副本的值,不会影响原始参数的值。

示例代码:

```python

def change_value(num):

num = 2

print("函数内部的值:", num)

value = 1

change_value(value)

print("函数外部的值:", value)

```

输出结果:

```

函数内部的值:2

函数外部的值:1

```

在上面的例子中,传递给change_value函数的是变量value的值1,函数内部对形参num进行了修改,但是并没有改变原始参数value的值。

2.传引用调用(call by reference):

传引用调用是指将参数的引用(地址)传递给函数中的形参,函数内部对形参的修改会改变实参的值。这是因为传引用调用的方式是直接操作参数的地址,函数对形参的操作实际上是在操作原始参数。

示例代码:

```python

def change_list(lst):

(4)

print("函数内部的列表:", lst)

my_list = [1, 2, 3]

change_list(my_list)

print("函数外部的列表:", my_list)

```

输出结果:

```

函数内部的列表:[1,2,3,4]

函数外部的列表:[1,2,3,4]

```

在上面的例子中,传递给change_list函数的是列表my_list的引用,函数内部对形参lst进行了修改,添加了元素4、由于参数是直接传递的引用,所以函数内部的修改会直接反映在原始参数上。

需要注意的是,Python的函数参数传递方式并不是严格按照传值调用和传引用调用的方式。它实际上是一种"传对象引用"的方式。具体来说,如果参数是可变对象(如列表、字典等),则参数传递的是对象的引用;如果参数是不可变对象(如数字、字符串等),则参数传递的是对象的值的副本。

示例代码:

```python

def change_string(s):

s = "Hello, World!"

print("函数内部的字符串:",s)

my_string = "Hello"

change_string(my_string)

print("函数外部的字符串:", my_string)

```

输出结果:

```

函数内部的字符串: Hello, World!

函数外部的字符串: Hello

```

在上面的例子中,传递给change_string函数的是字符串my_string的值"Hello"的副本。函数内部对形参s进行了修改,但是并没有改变原始参数my_string的值。

总结:

Python中的函数参数传递有传值调用和传引用调用两种方式,实际上是一种"传对象引用"的方式。不可变对象的参数传递是通过传值调用的方式,可变对象的参数传递是通过传引用调用的方式。需要根据参数的类型来理解参数传递的机制,以便更好地理解和使用Python中的函数。传递过程中,参数的值或引用复制给函数中的形参,函数内部对形参的修改不会影响到原始参数的值。


本文标签: 函数 参数 调用 引用 方式