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