測試環境為 CentOS 8 x86_64 (虛擬機)
Python 的引數 可以有 default , *args (*) , **kwargs (**) 下面來看一下範例.
參考文章 – https://skylinelimit.blogspot.com/2018/04/python-args-kwargs.html
-
Default
[root@localhost ~]# vi default.py def plus(a, b, c=None): res = a + b + (c if c else 0) return res print(plus(1,2)) print(plus(1,2,3))
執行結果
[root@localhost ~]# python3 default.py 3 6
說明:
函數 plus 有 3 個參數, 只少須輸入 2 個參數 a 與 b , c 沒輸入時自帶預設值 None.def plus(a, b, c=None):
-
*args (*)
如果引數是不確定個數的話可以使用 * 來把引數收集到 tuple 資料型態物件(跟 List 資料型態物件一樣,但無法新增,刪除,修改其內容).
[root@localhost ~]# vi args.py def plus(*nums): print(nums) res = 0 for i in nums: res += i return res print(plus(1,2,3,4,5)) print(plus(5,3,1))
執行結果
[root@localhost ~]# python3 args.py (1, 2, 3, 4, 5) 15 (5, 3, 1) 9
說明:
在 plus 函數傳入的引數會儲存到 tuple 資料型態物件.def plus(*nums): print(nums)
執行結果
(1, 2, 3, 4, 5) (5, 3, 1)
-
**kwargs (**)
** 為 Keyword Argument , 如果引數是不確定個數的話,除了可以使用 * 來把引數收集到 tuple 資料型態物件,還可以使用 ** 來把引數收集到 dict 資料型態物件.
dict 資料型態物件資料是由 key (鍵值,可使用 括字串(str),整數(int)與浮點數(float) ) + Value (值,可以為任何東西) 來組成).如下:Computer1={"CPU":"Intel" , "MEM":["Hynix 16G","Hynix 16G"] , "Disk":"Samsung"}
[root@localhost ~]# vi kwargs.py def fun(**settings): print(settings.get('name' , 'Not Found')) print(settings.get('attack' , 'Not Found')) print(settings.get('hp' , 'Not Found')) fun(name='Sky', attack=100, hp=500) fun(attack=100, hp=500)
執行結果
[root@localhost ~]# python3 kwargs.py Sky 100 500 Not Found 100 500
說明:
透過 dic 物件的 get method 來讀取相對應的值.print(settings.get('name' , 'Not Found'))
-
*args (*) , **kwargs (**)
將 *args (*) , **kwargs (**) 這兩個合併起來使用就可以接受任意引數了,須注意 * 一定要在 ** 的前面.
[root@localhost ~]# vi all.py def fun(*args, **kwargs): print(args, kwargs, sep='\n') fun([1,2,3] , a=1 , b='b2' , c=0.38)
執行結果
[root@localhost ~]# python3 all.py ([1, 2, 3],) {'a': 1, 'b': 'b2', 'c': 0.38}
說明:
須注意引數 * 一定要在 ** 的前面.fun([1,2,3] , a=1 , b='b2' , c=0.38)
沒有解決問題,試試搜尋本站其他內容