簡體   English   中英

具有** kwargs的功能

[英]Functions with **kwargs

我想編寫一個僅接受可選參數ab的Python函數myfun

如果在調用myfun時未指定ab之一,如何告訴myfunab使用一些默認值?

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用於收集任意數量的關鍵字參數。 如果您只想接受兩個,則它不是使用的正確工具。

相反,您應該為ab參數指定默認值:

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):

如果您沒有在功能定義中將它們添加為關鍵字,那么用戶將無法知道他們可以設置ab

如果使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM