Python函数参数解包:*args与**kwargs深度解析
2026/7/23 18:56:17 网站建设 项目流程

*args:可变位置参数

1.1 基本用法

*args允许函数接受任意数量的位置参数。在函数内部,args是一个元组(tuple),包含所有传入的位置参数。

1

2

3

4

5

6

7

8

defsum_all(*args):

result=0

fornuminargs:

result+=num

returnresult

print(sum_all(1,2,3))# 输出: 6

print(sum_all(10,20))# 输出: 30

1.2 *args的本质

实际上,*args中的args只是一个约定俗成的名字。重要的是前面的*符号。

1

2

3

4

5

6

7

defshow_params(*numbers):

print(f"类型: {type(numbers)}")

print(f"内容: {numbers}")

show_params(1,2,3)

# 类型: <class 'tuple'>

# 内容: (1, 2, 3)

二、**kwargs:可变关键字参数

2.1 基本用法

**kwargs允许函数接受任意数量的关键字参数。在函数内部,kwargs是一个字典(dict)。

1

2

3

4

5

6

7

8

defprint_info(**kwargs):

forkey, valueinkwargs.items():

print(f"{key}: {value}")

print_info(name="张三", age=25, city="北京")

# name: 张三

# age: 25

# city: 北京

三、*args和**kwargs的组合使用

1

2

3

4

5

6

defflexible_function(required_arg,*args,**kwargs):

print(f"必需参数: {required_arg}")

print(f"位置参数: {args}")

print(f"关键字参数: {kwargs}")

flexible_function("hello",1,2,3, name="test", value=100)

四、参数解包(Unpacking)

1

2

3

4

5

6

7

8

defadd(a, b, c):

returna+b+c

numbers=[1,2,3]

print(add(*numbers))# 等价于 add(1, 2, 3)

data={"a":1,"b":2,"c":3}

print(add(**data))# 等价于 add(a=1, b=2, c=3)

五、实际应用场景

5.1 装饰器

1

2

3

4

5

6

7

8

9

importtime

deftimer(func):

defwrapper(*args,**kwargs):

start=time.time()

result=func(*args,**kwargs)

print(f"{func.__name__} 执行时间: {time.time() - start:.4f}秒")

returnresult

returnwrapper

5.2 函数转发

1

2

3

4

5

defwrapper_function(*args,**kwargs):

print("前置处理...")

result=actual_function(*args,**kwargs)

print("后置处理...")

returnresult

六、注意事项与最佳实践

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询