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


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