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

 

 

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

1.打包

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

打包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}

2.拆解

拆解就是将传递给函数的一个列表,元组或者字典拆分成独立的多个元素,然后赋值给函数中的参变量.在拆解字典时,有两种拆解方法,第一种使用*拆解,解出来传递给函数的只有键值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'}
 

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

seasermy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值