python解包-Python函数参数的打包和解包(超级详细)

在前面的教程中,我们介绍了两种可变参数的标记方式:利用一个星号*构建一个参数元组;利用两个星号**构建参数字典。

事实上,在函数参数传递过程中,还有一种看似类似实则不然的参数传递方式。说它“类似”,是因为在外观上它也在参数前打上一个星号*。说它“不然”,是因为这种操作的内涵不同:星号*是作用在实参上的;实参是有讲究的,这些实参主要包括列表、元组、集合、字典及其他可迭代对象。

如果在这类实参前面加上一个星号*,那么 Python 解释器就会对这些可迭代对象进行解包(unpacking,亦有文献译作“解压”),然后将解包后的元素一一分配给多个形参。

Python参数打包

说到解包,我们先介绍一下它的反操作——打包(packing),参见如下代码:

In [1]: val = 1, 2, 3, 4

In [2]: type(val)

Out[2]: tuple

In [3]: val

Out[3]: (1, 2, 3, 4)

在输入 In [1] 处,表达式等号的右边分别是四个零散的整型数 1, 2, 3, 4,然后赋值给了 val 对象。通过元组知识的学习,我们知道,Python 将等号右边的四个整型数“打包”成了一个匿名的元组,然后赋值给 val。

另一方面,Python 中变量的类型并不需要事先声明,而是通过赋值得到的。通过赋值操作,将等号右边的变量类型赋给等号左边的对象即可。如此一来,In [1] 处 val 的类型就被定义为一个元组了。

上述判断可从 Out[2] 的输出结果中得到印证。在输出 Out[2] 中,元组的另外一个标志——那对圆括号(

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值