快讯:Python中打包和解包(*和**)的使用详解
目录
一、打包参数二、解包参数三、几点注意*和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用!
一、打包参数
* 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量args
(资料图片仅供参考)
>>> def f(*args): # * 在函数定义中使用 print(args) >>> f() () >>> f(1) (1,) >>> f(1, 2, 3, 4) (1, 2, 3, 4)
我们可以看到,1,2,3,4传入的时候,*args可以把它们打包起来(这时,1,2,3,4可以看成是一个整体,相当于由四个参数变成了两个)
** 的作用:在函数定义中,收集关键字参数到一个新的字典,并将整个字典赋值给变量kwarg
>>> def f(**kwargs): # ** 在函数定义中使用 print(kwargs) >>> f() {} >>> f(a=1, b=2) {"a": 1, "b": 2}
二、解包参数
* 的作用:在函数调用中,* 能够将元组或列表解包成不同的参数(打包的时候是打包成元祖,解包可以解包元祖和列表)
>>> def func(a, b, c, d): print(a, b, c, d) >>> args = (1, 2, 3, 4) >>> func(*args) # * 在函数调用中使用 1 2 3 4 >>> args = [1, 2, 3, 4] >>> func(*args) 1 2 3 4
注意:原本args是一个整体,也就是一个参数,通过*解包之后,变成了四个参数,所以函数要有4个变量来接收
** 的作用:在函数调用中,** 会以键/值的形式解包一个字典,使其成为一个独立的关键字参数
>>> def func(a, b, c, d): print(a, b, c, d) >>> kwargs = {"a": 1, "b": 2, "c": 3, "d": 4} >>> func(**kwargs) # ** 在函数调用中使用 2 3 4
三、几点注意
1.在函数定义时, * 表示打包,在函数体内部, * 表示的却是解包
>>> def foo(*args, **kwargs): print(args) #未解包参数 print(*args) #解包参数 >>> v = (1, 2, 4) >>> d = {"a":1, "b":12} >>> foo(v, d) ((1, 2, 4), {"a": 1, "b": 12}) (1, 2, 4) {"a": 1, "b": 12}
我们可以看到,在一开始,v,d作为整体被打包成了一个元祖,然后在解包回原来的形式。
2. * 和 ** 的打包和解包并不能脱离函数而存在
>>> c = {"name": "zhang", "age": 2} >>> **c SyntaxError: invalid syntax >>> >>> "Name:{name}, Age:{age}".format(**c) "Name:zhang, Age:2"
注意:print()函数只支持 *args,不支持 **kwargs
到此这篇关于Python中打包和解包(*和**)的使用详解的文章就介绍到这了,更多相关python打包和解包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
X 关闭
X 关闭
- 1联想拯救者Y70发布最新预告:售价2970元起 迄今最便宜的骁龙8+旗舰
- 2亚马逊开始大规模推广掌纹支付技术 顾客可使用“挥手付”结账
- 3现代和起亚上半年出口20万辆新能源汽车同比增长30.6%
- 4如何让居民5分钟使用到各种设施?沙特“线性城市”来了
- 5AMD实现连续8个季度的增长 季度营收首次突破60亿美元利润更是翻倍
- 6转转集团发布2022年二季度手机行情报告:二手市场“飘香”
- 7充电宝100Wh等于多少毫安?铁路旅客禁止、限制携带和托运物品目录
- 8好消息!京东与腾讯续签三年战略合作协议 加强技术创新与供应链服务
- 9名创优品拟通过香港IPO全球发售4100万股 全球发售所得款项有什么用处?
- 10亚马逊云科技成立量子网络中心致力解决量子计算领域的挑战