Python逆向参数收集详解(进阶必读)
所谓逆向参数收集,指的是在程序己有列表、元组、字典等对象的前提下,把它们的元素“拆开”后传给函数的参数。逆向参数收集需要在传入的列表、元组参数之前添加一个星号,在字典参数之前添加两个星号。例如如下代码:
实际上,即使是可变参数,如果程序需要将一个元组传给该参数,那么同样需要使用逆向收集。例如如下代码:
运行上面代码,将看到如下输出结果:
此外,也可使用如下方式调用 foo() 函数:
如果不使用逆向收集(不在元组参数之前添加星号),整个元组将会作为一个参数,而不是将元组的元素作为多个参数。例如按如下方式调用 foo() 函数:
def test(name, message): print("用户是: ", name) print("欢迎消息: ", message) my_list = ['小明', '欢迎来C语言中文网'] test(*my_list)运行结果为:
用户是: 小明
欢迎消息: 欢迎来C语言中文网
实际上,即使是可变参数,如果程序需要将一个元组传给该参数,那么同样需要使用逆向收集。例如如下代码:
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': 'C语言中文网', 'desc': '这是一个精美而实用的网站'} # 按逆向收集的方式将my_dict的多个key-value传给bar()函数 bar(**my_dict)运行结果为:
C语言中文网 VIP价格是: 159
描述信息 这是一个精美而实用的网站
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频