Python星号操作符的作用

作用

  • 作用于函数中的形式参数,使函数具有接收可变参数的功能
  • 作用于函数调用时的实际参数,单星号对应元组,双星号对应字典。对于元组,将元组中对应值传给对应参数,对于字典,将字典中对应key-value对指定的值传给对应的参数。

用法

对于第一种:

def somefunc(*arg):
    #code goes here

这样,传入的参数将会先被“打包”成为一个元组,然后再当做参数传入。

def somefunc(**arg):
    #code goes here

传入的参数就会被放入一个字典中再传入。

一个便于理解的例子:

def somefunc(a, b, c, *starone, **startwo):
    print a, b, c
    print starone
    print startwo

运行结果(ipython下):

In [1]: def somefunc(a, b, c, *starone, **startwo):
   ...:         print a, b, c
   ...:         print starone
   ...:         print startwo
   ...:     

In [2]: somefunc(1, 2, 3, 4, 5, 6, arg0=80, arg1=201)
1 2 3
(4, 5, 6)
{'arg0': 80, 'arg1': 201}

分析:
somefunc接收a, b, c, 一个带一个星号的starone和带两个星号的startwo,根据前面的介绍,starone相当于接收一个元组,而startwo相当于接收一个字典。所以传入的1, 2, 3, 4, 5, 6当中的1, 2, 3分别对应a, b, c直接作为参数传入,剩下的指明名字的参数之前的4, 5, 6则被打包成一个元组一起传入,而指明名字的将被带两个星号的参数接收,被打包成一个字典,key对应名字value对应值。

对于第二种

例子:

In [1]: def somefunc(a, b, c):
   ...:     print a, b, c
   ...:     

In [2]: test_arg0 = (1, 2, 3)

In [3]: somefunc(*test_arg0)
1 2 3
In [4]: test_arg2 = {"a":1, "b":2, "c":3}
In [5]: somefunc(**test_arg2)
1 2 3

分析:
somefunc接收a, b, c作为参数,第一次代入的却是一个元组,这里的单星号就是起到将元组“解包”, 把每一个值放到对应参数的位置,然后代进去的作用。同理,双星号,则是将字典解包,按照键值对来把值放到对应的参数的位置,而字典的键是由字符串给出的参数名。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值