python装B系列_一颗星(*)和两颗星(**)

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章