赞
踩
*args
和 **kwargs
都是用来处理函数参数的特殊语法,它们允许函数接受任意数量的位置参数(args)和关键字参数(kwargs)。下面是它们的主要区别:
当你不确定你的函数会接受多少个参数时,可以使用*args。这时,无论你收到多少参数,都会被视为一个元组。
当你不知道你的函数可能会接收多少关键字参数时,你可以使用 **kwargs
。这时,无论多少个关键字参数都会被视为一个字典。
*args
:在函数定义中,它应该放在所有其他参数的后面,且前面带有一个 *
。
**kwargs
:在函数定义中,它应该放在所有其他参数的后面,且前面带有两个 **
。
1,
- def print_arguments(*args, **kwargs):
- print(sum(args))
-
- for key, value in kwargs.items():
- print(f"Keyword argument: {key}={value}")
-
- result = print_arguments(1, 2, 3, name="Alice", age=25)
- print(result)
结果:
2,装饰器接受不定长度的参数
- def my_decoder(func):
- def wrapper(*args,**kwargs):
- print("这是一个装饰器")
- func(*args,**kwargs)
- return wrapper
-
- @my_decoder
- def my_func1(x):
- y=x*2
- print(y)
-
- @my_decoder
- def my_func2(x,y):
- z=x+y
- print(z)
-
- if __name__=="__main__":
- test=my_func1(3)
- test=my_func2(3,7)
结果
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。