Python 函数的参数传递181



函数是 Python 中的基本构建块,允许我们对代码进行分组和重用。参数是传递给函数的信息,使它们能够执行特定任务。理解参数传递对于编写健壮、可维护的代码至关重要。

参数传递方法

Python 支持两种主要的参数传递方法:值传递

函数接收参数的副本。
对参数的修改不会影响调用函数中相应变量的值。

引用传递

函数接收参数的引用。
对参数的修改会反映在调用函数中相应变量的值。

值传递示例

考虑以下代码:```python
def change_num(num):
num = num + 5
x = 10
change_num(x)
print(x) # 输出:10
```

在这个示例中,`change_num()` 函数接收 `num` 参数的值传递。函数内对 `num` 的修改不影响调用函数中 `x` 的值。这是因为函数接收了 `x` 的副本,而不是引用。

引用传递示例

要执行引用传递,我们必须使用 `mutable`(可变)类型,例如列表或字典。考虑以下代码:```python
def change_list(lst):
(5)
lst = [1, 2, 3]
change_list(lst)
print(lst) # 输出:[1, 2, 3, 5]
```

在这个示例中,`change_list()` 函数接收 `lst` 参数的引用传递。函数内对 `lst` 的修改会反映在调用函数中 `lst` 的值。这是因为函数接收了 `lst` 的引用,这意味着它指向相同的内存位置。

默认参数

默认参数允许我们为函数参数指定默认值。如果调用时未提供参数值,将使用默认值。例如:```python
def greet(name, message="Hello"):
print(f"{message} {name}!")
greet("John") # 输出:Hello John!
greet("Mary", "Welcome") # 输出:Welcome Mary!
```

在第一个调用中,未提供 `message` 参数,因此使用默认值 "Hello"。在第二个调用中,提供了 `message` 参数,因此使用此值。

可变参数

可变参数允许函数接受任意数量的参数。它们使用 `*` 星号表示,例如:```python
def sum_numbers(*nums):
total = 0
for num in nums:
total += num
return total
result = sum_numbers(1, 2, 3, 4, 5) # 输出:15
```

在这个示例中,`sum_numbers()` 函数接收任意数量的数字参数,并返回它们的总和。该函数使用星号运算符 `*` 来收集这些数字并将其存储在 `nums` 元组中。

关键字参数

关键字参数允许我们通过名称指定参数值。它们使用双星号 `` 表示,例如:```python
def user_info(kwargs):
print(kwargs["name"])
print(kwargs["email"])
user_info(name="John", email="john@")
```

在这个示例中,`user_info()` 函数接收任意数量的关键字参数,并通过 `kwargs` 字典访问它们。这允许我们使用更具描述性的名称向函数传递数据。

Conclusion

理解 Python 中的参数传递对于编写健壮和可维护的代码至关重要。了解值传递和引用传递之间的区别,以及如何使用默认参数、可变参数和关键字参数,可以显着提高我们的代码质量和灵活性。

2024-10-23


上一篇:Python 目录文件:全面的指南

下一篇:Python 函数作为参数传递