*parameter
其中,parameter 表示形参名。这种形式表示接受任意多个实际参数,并将其放到一个元组中。
- # 定义了支持参数收集的函数
- def test(a, *books) :
- print(books)
- # books被当成元组处理
- for b in books :
- print(b)
- # 输出整数变量a的值
- print(a)
- # 调用test()函数
- test(5 , "C语言中文网" , "Python教程")
('C语言中文网', 'Python教程')
C语言中文网
Python教程
5
- # 定义了支持参数收集的函数
- def test(*books ,num) :
- print(books)
- # books被当成元组处理
- for b in books :
- print(b)
- print(num)
- # 调用test()函数
- test("C语言中文网", "Python教程", num = 20)
**parameter
其中,parameter 表示形参名。这种形式可以接收任意多个以关键字参数赋值的实际参数,并将其放到一个字典中。
- # 定义了支持参数收集的函数
- def test(x, y, z=3, *books, **scores) :
- print(x, y, z)
- print(books)
- print(scores)
- test(1, 2, 3, "C语言中文网" , "Python教程", 语文=89, 数学=94)
1 2 3
('C语言中文网', 'Python教程')
{'语文': 89, '数学': 94}
test(1, 2, "C语言中文网" , "Python教程", 语文=89, 数学=94)
上面代码在调用 test() 函数时,前面的 1、2、"C语言中文网" 将会传递给普通参数 x、y、z;接下来的一个字符串将会由 books 参数收集成元组;最后的两个关键字参数将会被收集成字典。运行上面代码,会看到如下输出结果:1 2 C语言中文网
('Python教程',)
{'语文': 89, '数学': 94}
test(1, 2, 语文=89, 数学=94)
上面代码在调用 test() 函数时,前面的 1、2 将会传给普通参数 x、y,此时 z 参数将使用默认的参数值 3,books 参数将是一个空元组;接下来的两个关键字参数将会被收集成字典。运行上面代码,会看到如下输出结果:1 2 3
()
{'语文': 89, '数学': 94}
- def test(name, message):
- print("用户是: ", name)
- print("欢迎消息: ", message)
- my_list = ['孙悟空', '欢迎来C语言中文网']
- 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)
name参数: fkit
nums参数: (1, 2, 3)
- # 使用逆向收集,将my_tuple元组的第一个元素传给name参数,剩下参数传给nums参数
- foo(*my_tuple)
name参数: 1
nums参数: (2, 3)
- # 不使用逆向收集,my_tuple元组整体传给name参数
- foo(my_tuple)
name参数: (1, 2, 3)
nums参数: ()
字典也支持逆向收集,字典将会以关键字参数的形式传入。例如如下代码:
- def bar(book, price, desc):
- print(book, "VIP价格是:", price)
- print('描述信息', desc)
- my_dict = {'price': 159, 'book': 'C语言中文网', 'desc': '这是一个精美而实用的网站'}
- # 按逆向收集的方式将my_dict的多个key-value传给bar()函数
- bar(**my_dict)
联系客服