*和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一、打包参数 * 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量
*和**在函数的定义和调用阶段,有着不同的功能,并且,*和**不能离开函数使用! 一、打包参数* 的作用:在函数定义中,收集所有位置参数到一个新的元组,并将整个元组赋值给变量args
我们可以看到,1,2,3,4传入的时候,*args可以把它们打包起来(这时,1,2,3,4可以看成是一个整体,相当于由四个参数变成了两个) ** 的作用:在函数定义中,收集关键字参数到一个新的字典,并将整个字典赋值给变量kwarg
二、解包参数* 的作用:在函数调用中,* 能够将元组或列表解包成不同的参数(打包的时候是打包成元祖,解包可以解包元祖和列表)
注意:原本args是一个整体,也就是一个参数,通过*解包之后,变成了四个参数,所以函数要有4个变量来接收 ** 的作用:在函数调用中,** 会以键/值的形式解包一个字典,使其成为一个独立的关键字参数
三、几点注意1.在函数定义时, * 表示打包,在函数体内部, * 表示的却是解包
我们可以看到,在一开始,v,d作为整体被打包成了一个元祖,然后在解包回原来的形式。 2. * 和 ** 的打包和解包并不能脱离函数而存在
注意:print()函数只支持 *args,不支持 **kwargs |
2019-06-18
2019-07-04
2021-05-23
2021-05-27
2021-05-27