python 函数参数 * **
时间: 2025-07-15 22:58:44 浏览: 5
在 Python 函数参数中,星号 `*` 和双星号 `**` 是用于处理可变数量的参数的强大工具。它们允许函数接受任意数量的位置参数和关键字参数。
### 星号 `*` 的作用
- **收集位置参数为元组**:当在函数定义中使用 `*args` 时,所有额外的位置参数都会被收集到一个名为 `args` 的元组中。
```python
def my_function(*args):
for arg in args:
print(arg)
my_function(1, 2, 3)
```
- **解包可迭代对象为位置参数**:在函数调用时,如果传递给函数的是一个可迭代对象(如列表或元组),可以使用 `*` 来解包这个可迭代对象,将其元素作为单独的位置参数传入函数[^3]。
```python
def add(a, b):
return a + b
numbers = [1, 2]
result = add(*numbers) # 相当于 add(1, 2)
```
### 双星号 `**` 的作用
- **收集关键字参数为字典**:在函数定义中使用 `**kwargs` 时,所有额外的关键字参数会被收集到一个名为 `kwargs` 的字典中,键是参数名,值是对应的参数值。
```python
def bar(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
bar(name='Alice', age=30)
```
- **解包字典为关键字参数**:在函数调用时,如果有一个字典包含了需要传递给函数的关键字参数,可以使用 `**` 来解包这个字典,使其内容作为关键字参数传入函数[^4]。
```python
def greet(name, message):
print(f"{message}, {name}!")
info = {'name': 'Bob', 'message': 'Hello'}
greet(**info) # 相当于 greet(name='Bob', message='Hello')
```
### 使用方法
当你想要创建一个能够处理不确定数量参数的函数时,你可以这样定义你的函数:
- 如果你需要处理不确定数量的位置参数,可以在函数定义中使用 `*args`。
- 如果你需要处理不确定数量的关键字参数,可以在函数定义中使用 `**kwargs`。
此外,在实际编程中,`*` 和 `**` 还可以用来强制要求某些参数必须以关键字形式提供,这通常与普通参数一起使用来分隔那些必须以关键字形式提供的参数。
例如:
```python
def example(a, *, b, c):
pass
example(1, b=2, c=3) # 正确: b 和 c 必须以关键字形式给出
# example(1, 2, 3) # 错误: b 和 c 需要关键字形式
```
通过这种方式,Python 提供了非常灵活的方式来处理函数参数,使得编写通用且易于使用的函数成为可能。
阅读全文
相关推荐

















