在学习Python可变参数之前,你可能已经熟悉了普通函数定义方式:固定数量的位置参数。但现实开发中,我们常常需要处理不确定数量的输入。这时,*args 和 **kwargs 就派上用场了!本教程将带你从零开始,彻底掌握Python函数参数中的可变长参数机制。
在Python中,可变长参数允许函数接收任意数量的参数。它分为两类:
*args:用于接收任意数量的位置参数(非关键字参数),在函数内部以元组形式存在。**kwargs:用于接收任意数量的关键字参数,在函数内部以字典形式存在。假设我们要写一个函数,计算任意多个数字的总和:
def sum_all(*args): total = 0 for num in args: total += num return total# 调用示例print(sum_all(1, 2)) # 输出: 3print(sum_all(1, 2, 3, 4, 5)) # 输出: 15print(sum_all()) # 输出: 0 注意:args 只是一个约定俗成的名称,你也可以写成 *numbers 或 *values,但星号 * 是必须的。
现在,我们想打印用户信息,但不知道会传入哪些字段:
def print_user_info(**kwargs): for key, value in kwargs.items(): print(f"{key}: {value}")# 调用示例print_user_info(name="张三", age=25, city="北京")# 输出:# name: 张三# age: 25# city: 北京 同样,kwargs 也是习惯写法,你可以用 **user_data 等,但双星号 ** 不可省略。
你可以在同一个函数中同时使用两者,但顺序必须是:普通参数 → *args → **kwargs。
def example_function(name, *args, **kwargs): print(f"姓名: {name}") print(f"额外位置参数: {args}") print(f"关键字参数: {kwargs}")# 调用example_function("李四", 10, 20, 30, hobby="读书", job="程序员")# 输出:# 姓名: 李四# 额外位置参数: (10, 20, 30)# 关键字参数: {'hobby': '读书', 'job': '程序员'} 1. 装饰器编写:装饰器通常需要包装任意参数的函数。
2. API封装:当你不确定调用者会传哪些参数时。
3. 日志记录:记录不同格式或数量的日志信息。
*args(元组)和 **kwargs(字典)的数据类型。* 和 ** 解包参数:numbers = [1, 2, 3]info = {"name": "王五", "age": 30}# 解包传参sum_all(*numbers) # 等价于 sum_all(1, 2, 3)print_user_info(**info) # 等价于 print_user_info(name="王五", age=30) 掌握 Python可变参数(尤其是 *args 和 **kwargs)是进阶Python编程的关键一步。它们让你的函数更加灵活、通用,适用于各种不确定输入的场景。通过本篇可变长参数教程,相信你已经能自信地在项目中使用它们了!
关键词回顾:Python可变参数、*args和**kwargs、Python函数参数、可变长参数教程
本文由主机测评网于2025-12-19发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/2025129904.html