def test(name, message):
print("用户是: ", name)
print("欢迎消息: ", message)
my_list = ['小明', '欢迎来考高分网']
test(*my_list) 运行结果为:
用户是: 小明
欢迎消息: 欢迎来考高分网
实际上,即使是可变参数,如果程序需要将一个元组传给该参数,那么同样需要使用逆向收集。例如如下代码:
def foo(name, *nums):
print("name参数: ", name)
print("nums参数: ", nums)
my_tuple = (1, 2, 3)
# 使用逆向收集,将my_tuple元组的元素传给nums参数
foo('fkit', *my_tuple) 上面程序中,调用将‘fkit’传给 foo() 函数的 name 参数,然后使用逆向收集将 my_tuple 包含的多个元素传给 nums 参数,nums 再将 my_tuple 的多个元素收集成元组。运行上面代码,将看到如下输出结果:
name参数: fkit
nums参数: (1, 2, 3)
此外,也可使用如下方式调用 foo() 函数:
# 使用逆向收集,将my_tuple元组的第一个元素传给name参数,剩下参数传给nums参数 foo(*my_tuple)此时程序会对 my_tuple 进行逆向收集,其中第一个元素传给 name参数,后面剩下的元素传给 nums 参数。运行上面代码,将看到如下输出结果:
name参数: 1
nums参数: (2, 3)
如果不使用逆向收集(不在元组参数之前添加星号),整个元组将会作为一个参数,而不是将元组的元素作为多个参数。例如按如下方式调用 foo() 函数:
# 不使用逆向收集,my_tuple元组整体传给name参数 foo(my_tuple)上面调用没有使用逆向收集,因此 my_tuple 整体作为参数值传给 name 参数。运行上面代码,将看到如下输出结果:
name参数: (1, 2, 3)
nums参数: ()
字典也支持逆向收集,字典将会以关键字参数的形式传入。例如如下代码:
def bar(book, price, desc):
print(book, "VIP价格是:", price)
print('描述信息', desc)
my_dict = {'price': 159, 'book': '考高分网', 'desc': '这是一个精美而实用的网站'}
# 按逆向收集的方式将my_dict的多个key-value传给bar()函数
bar(**my_dict) 运行结果为:
考高分网 VIP价格是: 159
描述信息 这是一个精美而实用的网站



