[英]Functions with **kwargs
我想編寫一個僅接受可選參數a
和b
的Python函數myfun
。
如果在調用myfun
時未指定a
或b
之一,如何告訴myfun
為a
和b
使用一些默認值?
def myfun(**kwargs):
a = kwargs.get('a', None)
# if a is not specified, use default a=4.4
b = kwargs.get('b', None)
# if b is not specified, use default b=2.1
c = 2*a
d = 3.1*b
return c, d
c,d = myfun(a=1,b=2)
print c,d
**kwargs
用於收集任意數量的關鍵字參數。 如果您只想接受兩個,則它不是使用的正確工具。
相反,您應該為a
和b
參數指定默認值:
def myfun(a=4.4, b=2.1):
演示:
>>> def myfun(a=4.4, b=2.1):
... print('a={}\nb={}'.format(a, b))
...
>>> myfun()
a=4.4
b=2.1
>>> myfun(a=1)
a=1
b=2.1
>>> myfun(a=1, b=2)
a=1
b=2
>>> myfun(b=2)
a=4.4
b=2
>>>
將它們設置為默認值:
def myfun(a=4.4,b=2.1):
如果您沒有在功能定義中將它們添加為關鍵字,那么用戶將無法知道他們可以設置a
和b
。
如果使用kwargs.get
設置值,則將傳遞默認值以獲取:
a = kwargs.get('a', 4.4) # a = 4.4 if a not in kwargs
b = kwargs.get('b', 2.1)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.