vector函数python_详解Python 函数参数的拆解

本文介绍了Python中函数参数拆解的概念,包括*args和**kwargs的使用,以及Python 3.5新增的拆解操作。通过实例展示了如何通过*和**对list、tuple、dict等集合对象进行拆解,并在函数调用中传递参数。文中还讨论了错误情况及赋值时的拆解操作,强调了正确匹配参数数量的重要性。
摘要由CSDN通过智能技术生成

本文为阅读 《Python Tricks: The Book》一书的 3.5 Function Argument Unpacking 的笔记与扩充理解。函数参数拆解是定义可变参数(VarArgs) *args 和 **kwargs 的反向特性。

*args 和 **kwars 是函数可定义一个形参来接收传入的不定数量的实参。

而这里的函数参数拆解是形参定义多个,在调用时只传入一个集合类型对象(带上 * 或 ** 前缀),如 list, tuple, dict, 甚至是 generator, 然后函数能自动从集合对象中取得对应的值。

如果能理解下面赋值时的参数拆解和 Python 3.5 的新增 * ** 操作,那么于本文讲述的特性就好理解了。

唯一的不同时作为参数的集合传入函数时必须前面加上* 或 **, 以此宣告该参数将被拆解,而非一个整体作为一个函数参数。加上* 或**与 Java 的 @SafeVarargs有类似的功效,最接近的是 Scala 的 foo(Array[String]("d", "e") : _*)写法。参见:Java 和 Scala 调用变参的方式

Python 的赋值拆解操作

>>> a, b = [1, 2] # a, b = (1, 2) 也是一样的效果

>>> print(a, b)

1 2

>>> a, b = {'x': 1, 'y':2}

>>> print(a, b)

x y

>>> a, b = {'x': 1, 'y':2}.keys()

>>> print(a, b)

x y

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值