您的位置:首页 > 编程语言 > Python开发

Python星号操作符的作用

2016-06-07 00:46 441 查看

作用

作用于函数中的形式参数,使函数具有接收可变参数的功能

作用于函数调用时的实际参数,单星号对应元组,双星号对应字典。对于元组,将元组中对应值传给对应参数,对于字典,将字典中对应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作为参数,第一次代入的却是一个元组,这里的单星号就是起到将元组“解包”, 把每一个值放到对应参数的位置,然后代进去的作用。同理,双星号,则是将字典解包,按照键值对来把值放到对应的参数的位置,而字典的键是由字符串给出的参数名。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python