最近在使用Python函数的时候,经常碰见函数中使用*args
、**kwargs
,而且参数的传递也是非常奇特,就特意对Python函数中*args
、**kwargs
进行了查询,下面就以实例进行说明。
*args
、**kwargs
在 Python 中,*args
和 **kwargs
分别用于处理函数的不定数量的位置参数和关键字参数。这句话比较难以理解,直接通过实例进行说明。
*args
*args
: 表示接受任意数量的位置参数。在函数定义中,*args
允许函数接受不定数量的位置参数,并将它们作为一个元组传递给函数。
def example_function(*args):
for arg in args:
print(arg)
#有两种传递方式,第一种直接传递元组
example_function(1, 2, 3, 4)
#第二种先定义一个元组,然后利用*()进行传递
my_tuple = (1, 2, 3, 4)
example_function(*my_tuple)
#两种运行结果相同
# 1
# 2
# 3
# 4
**kwargs
**kwargs
: 表示接受任意数量的关键字参数。在函数定义中,**kwargs
允许函数接受不定数量的关键字参数,并将它们作为一个字典传递给函数。
def example_function(**kwargs):
for key, value in kwargs.items():
print(f'{key}: {value}')
#有两种传递方式,第一种直接传递键值对
example_function(a=1, b=2, c=3)
#第二种是定义一个字典,用**{}进行解包
my_dict = {'a': 1, 'b': 2, 'c': 3}
example_function(**my_dict)
#两种运行结果相同
# a: 1
# b: 2
# c: 3
*args
与**kwargs
联合使用有些函数中往往*args
和 **kwargs
都存在,因此它既可以接受任意数量的位置参数(通过 *args
),又可以接受任意数量的关键字参数(通过 **kwargs
)。
#定义一个传递*args 和 **kwargs函数
def example_function(*args,**kwargs):
for arg in args:
print(arg)
for key, value in kwargs.items():
print(f'{key}: {value}')
#定义元组和字典
my_tuple = (1, 2, 3, 4)
my_dict = {'a': 1, 'b': 2, 'c': 3}
#一起传递元组和字典
example_function(*my_tuple,**my_dict)
# 结果
# 1
# 2
# 3
# 4
# a: 1
# b: 2
# c: 3
大家如果有问题需要交流或者有项目需要合作,可以加Q Q :504156006详聊,加好友请留言“CSDN”,谢谢。