共计 1011 个字符,预计需要花费 3 分钟才能阅读完成。
在 Python 中,函数的参数传递方式非常灵活。除了常见的固定位置参数和关键字参数外,还可以使用参数解包的方式来传递多个值或键值对。主要通过 *args 和**kwargs来实现。
一、*args的使用
*args用于接收任意数量的位置参数,并以元组的形式传入函数。
示例:
def add_numbers(*args):
total = 0
for num in args:
total += num
return total
print(add_numbers(1, 2, 3)) # 输出 6
print(add_numbers(5, 10, 15, 20)) # 输出 50
在上例中,函数可以接受任意数量的数字,args会自动将它们打包为一个元组。
二、**kwargs的使用
**kwargs用于接收任意数量的关键字参数,并以字典的形式传入函数。
示例:
def show_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
show_info(name="Alice", age=25, city="Shanghai")
输出:
name: Alice
age: 25
city: Shanghai
这里 kwargs 会将传入的关键字参数转为字典,方便处理。
三、结合使用 *args 和**kwargs
二者可以同时在函数定义中使用,用来接收任意的参数组合。
示例:
def func(*args, **kwargs):
print(" 位置参数:", args)
print(" 关键字参数:", kwargs)
func(1, 2, 3, name="Bob", age=30)
输出:
位置参数: (1, 2, 3)
关键字参数: {'name': 'Bob', 'age': 30}
四、参数解包
除了函数定义中使用,*和 ** 还可以在函数调用时解包已有的列表或字典。
示例:
def greet(name, age, city):
print(f" 你好,我是 {name},今年{age} 岁,来自{city}。")
args = ("Tom", 28, "Beijing")
kwargs = {"name": "Lucy", "age": 22, "city": "Guangzhou"}
greet(*args)
greet(**kwargs)
这里分别演示了列表 / 元组和字典的解包传参方式。
通过掌握 *args 和**kwargs,我们能够更灵活地设计和调用函数,尤其在编写通用工具函数或需要处理复杂参数时,优势非常明显。
正文完