在Python的函数中,*这个符号可以有不同的用法。
在函数定义中,*表示接受任意数量的参数。这些参数会被收集成一个元组(tuple)。例如:
def foo(*args):
print(args)
foo(1, 2, 3) # 输出: (1, 2, 3)
在函数调用中,*用于将一个可迭代对象(如列表或元组)解包成单独的参数。例如:
def foo(a, b, c):
print(a, b, c)
my_list = [1, 2, 3]
foo(*my_list) # 输出: 1 2 3
在函数定义中,**也可以用于指定关键字参数。这样函数可以接受任意数量的关键字参数,并将它们收集成一个字典(dictionary)。例如:
def foo(**kwargs):
print(kwargs)
foo(a=1, b=2) # 输出: {'a': 1, 'b': 2}
在函数调用中,**用于将一个字典解包成关键字参数。例如:
def foo(a, b):
print(a, b)
my_dict = {'a': 1, 'b': 2}
foo(**my_dict) # 输出: 1 2