python装B系列_ 一颗星 * 和两颗星 **
有没有发现,星(*)真是一个神奇的符号!想一想,没有它,C语言还有啥好玩的?同样,因为有它,Python 才会如此的仪态万方、风姿绰约、楚楚动人!Python 函数支持默认参数和可变参数,一颗星表示不限数量的单值参数,两颗星表示不限数量的键值对参数。
来看个例子
>>> def multi_sum(*args):
s = 0
for item in args:
s += item
return s
>>> multi_sum(3,4,5)
12
在这里args变成了元组类型
我们试着输出他的类型
def multi_sum(*args):
... s = 0
... for item in args:
... s += item
... print(type(args))
... return s
...
>>> multi_sum(1,2,3,4,5)
<class 'tuple'>
15
Python 函数允许同时全部或部分使用固定参数、默认参数、单值(一颗星)可变参数、键值对(两颗星)可变参数,使用时必须按照前述顺序书写。
>>> def do_something(name, age, gender='男', *args, **kwds):
print('姓名:%s,年龄:%d,性别:%s'%(name, age, gender))
print(args)
print(kwds)
>>> do_something('xufive', 50, '男', 175, 75, math=99, english=90)
姓名:xufive,年龄:50,性别:男
(175, 75)
{'math': 99, 'english': 90}
在这里两颗星(**)后面的参数变成了字典类型
此外 一颗星 和 两颗星还可以用作列表、元组、字典的解包
>>> a = (1,2,3)
>>> print(a)
(1, 2, 3)
>>> print(*a)
1 2 3
>>> b = [1,2,3]
>>> print(b)
[1, 2, 3]
>>> print(*b)
1 2 3
>>> c = {'name':'xufive', 'age':51}
>>> print(c)
{'name': 'xufive', 'age': 51}
>>> print(*c)
name age
>>> print('name:{name}, age:{age}'.format(**c))
name:xufive, age:51
一颗星也可以向c一样指向python地址代表的操作数
>>> a = [1,2,3,4,5]
>>>
>>> a = map((lambda x :x*x),a)
>>>> print(a)
<map object at 0x7fe51dd900d0>
>>> print(*a)
1 4 9 16 25