初學 Python,看到有些範例會有 **kwargs 的用法,一開始不知道其意義,後來才知道它就是所謂的 keyword arguments。
先看下列的程式碼,api_function 就假設是第三方設計的 API,而 func_call_api 則是我們自己維護的 function。
def api_function(a, b, c):
print a
print b
print c
def func_call_api(a, b, c):
api_function(a=a+1, b=b+1, c=c+1)
func_call_api(a=1,b=2,c=3)
這樣的程式一開始不會有什麼問題,但假設計設這個 API 的人很機車,喜歡亂改 API 的參數,把原本的 a,b,c 參數改成 a,b,c,d,e,就會造成很大的問題。
def api_function(a, b, c, d, e):
print a
print b
print c
print d
print e
def func_call_api(a, b, c, d, e):
api_function(a=a+1, b=b+1, c=c+1, d, e)
func_call_api(a=1,b=2,c=3,d=4,e=5)從上面的程式碼,得知 API 一改,要更動的地方就會有兩個,假設我們的程式也不是那麼在意後來多加的參數,那可以用以下的寫法:
def api_function(a, b, c, d, e):
print a
print b
print c
print d
print e
def func_call_api(a, b, c, **kwargs):
api_function(a=a, b=b, c=c, **kwargs)
func_call_api(a=1,b=2,c=3,d=4,e=5)雖然最後程式還是得更動,但至少幅度比較小。至於那 kwarg 是什麼,將它列印出來就會發現它是一個 dictionary object,內容會是 {'e': 5, 'd': 4}。對於一直以來只寫 C# 的我而言,這類的寫法的確是相當的新鮮,也讓程式的維護較為簡單。
文章標籤
全站熱搜

x8zYWyR2wqgjpB奢侈品仿牌原單品質良心賣家,誠信做生意,保固說到做到超時尚品牌最新單品!明星、潮流達人扮酷扮潮必不可少的寶貝!咨詢請加LINE:kk2023, 貨到付款,黑貓宅配喔 t20U2RptCeh