| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> Python中的*args和**kwargs理解 -> 正文阅读 |
|
[Python知识库]Python中的*args和**kwargs理解 |
1. 理解? *? 和? **?Python的赋值语句可以解包将可迭代元素剥离出来
赋值语句可以理解为 a, b, c = [a, b, c] = [1, 2, 3], 将变量a, b, c与目标列表中的数据进行对应. Python中 * 和 ** 可以理解成一个特殊的解包语法. 将可迭代的对象(列表字典等)解包, 获取其中的内容.? 将 *?应用到赋值语句中, 可以解包多个数据对应到一个列表变量.
结合 print 函数理解解包, 第二个print(*['a', 'b', 'c', 'd']) 使用*号将列表解包后, 相当于print('a', 'b', 'c', 'd')
?2.Python函数的参数Python函数的传参, 支持两种方式, 一种是基于位置传递(Positional Arguments), 一种是基于变量名称传递(Keyword Arguments). 比如定义一个函数func 接受4个参数
可以基于位置传参, (1, 2, 3, 4)根据位置顺序分别赋值给参数a, b, c, d.?
也可以基于变量名传递参数, 指定(d=1, c=2, b=3, a=4)分别赋值给对应变量, keyword argument可以乱序
或者混合两种参数格式, 组合位置参数和关键字参数. 注意这时不能重复赋值, 即已经传递了位置参数, 不能再通过关键字传参. 如下面代码中func(1, 2, a=3, c=4) 已经通过position参数给a赋值为1, 后面再传keyword参数a=3的话, 对a参数赋值2次, 报TypeError
?3. 支持任意参数的函数 *args, **kwargs然后就是我们查看源码时经常看到的语法,?*args, **kwargs. 本质上args是工一个元组, kwargs是一个字典变量, 目的是可以保存函数中任意多个的位置参数和关键字参数.
定义一个除了位置参数 var , 和关键字参数 key 之外还接受任意参数的函数. 调用函数时,传的其他参数就会赋值给 args, 和 kwargs.?
可以看到 'one' 赋值给了变量 var,? 'two' 和 'three' 传给了元组args,? ?'key'赋值给了变量 four=4, five=5, 传递给了kwargs ,?{'four': 4, 'five': 5}. 改变three的传参方式使用three='three'之后, three: three就去到了变量kwargs中. 4. 固定位置参数和关键字参数? /?? *??Python3.8 中增加了固定参数的关键字?/?和?*?, 使用/之前的参数,只能通过位置方式传参, 使用*之后的参数, 只能通过关键字方式传参. 重新写一个最开始的函数
其中参数a只能通过位置传递, c和d只能通过关键字传递, 参数b不做限制
可以看到, 限制了参数类型之后, 传参方式错误函数会报TypeError, 应用到一些需要限制显式传递参数的场景, 可以提高代码的可读性. 5. **的另一个用法, 字典合并Python3.8之后还增加了一个**的新用法, 支持在字典初始化时使用**语法. 合并现有字典的数据时, 可不使用dict.update()函数. 代码示例如下
总结:本文总结了python中*和**的使用方法,? 解包时可以获取可迭代对象中的内容.
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 | -2024/12/26 0:48:03- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |
数据统计 |