python中运算符*和**的作用-参数传递

*常常用于参数传递中的打包和解包,对函数传递的参数进行打包(打包成元组tuple或字典dictionary)和拆解(分解成单个元素),其中元组tuple的打包和解包使用单星号,字典dictionary的打包和拆解使用双星号

打包

打包就是将传递给函数的任意多个非关键字参数/关键字参数打包成一个元组或字典(元组只能接收非关键字参数,字典只能接收关键字参数)

打包tuple:

def pack(a, *b):
        print type(a), a
        print type(b), b
 
pack(1, 2, 3, 4, 5)

输出结果:
<type 'int'> 1
<type 'tuple'> (2, 3, 4, 5)

def pack(a, **b):
        print type(a), a
        print type(b), b
 
pack(1, a1=2, a2=3)

输出结果如下:
<type 'int'> 1
<type 'dict'> {'a1': 2, 'a2': 3}

拆解

拆解就是将传递给函数的一个列表,元组或者字典拆分成独立的多个元素,然后赋值给函数中的参变量.在拆解字典时,有两种拆解方法,第一种使用拆解,解出来传递给函数的只有键值key,第二种使用*拆解,解出来的是字典的每一项.

def pack(a, b, *c):
        print type(a), a
        print type(b), b
        print type(c), c
 
score = [1.0, 2.0, 3.0, 4.0]
pack(*score)

<type 'float'> 1.0
<type 'float'> 2.0
<type 'tuple'> (3.0, 4.0)

def pack(*c):
        print type(c), c
 
student = {'score' : 1.0, 'id' : 2, 'name' : 'xiaoxiao'}
pack(*student)

<type 'tuple'> ('score', 'id', 'name')

 def pack(*a, **b):
        print type(a), a
        print type(b), b
 
age = [1, 2, 3]
student = {'score' : 1.0, 'id' : 2, 'name' : 'xiaoxiao'}
pack(*age, **student)

<type 'tuple'> (1, 2, 3)
<type 'dict'> {'score': 1.0, 'id': 2, 'name': 'xiaoxiao'}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容