所以我知道你可以通過執行以下操作來圍繞另一個函數包裝一個函數。Python通過函數包裝器傳遞變量賦值
def foo(a=4,b=3):
return a+b
def bar(func,args):
return func(*args)
,所以如果我當時叫
bar(foo,[2,3])
返回值是5
我想知道有沒有用吧打電話與富富的方式(B = 12)哪裏酒吧會返回16?
這是否有意義?提前感謝你的時間!抱歉提出這麼多問題。
所以我知道你可以通過執行以下操作來圍繞另一個函數包裝一個函數。Python通過函數包裝器傳遞變量賦值
def foo(a=4,b=3):
return a+b
def bar(func,args):
return func(*args)
,所以如果我當時叫
bar(foo,[2,3])
返回值是5
我想知道有沒有用吧打電話與富富的方式(B = 12)哪裏酒吧會返回16?
這是否有意義?提前感謝你的時間!抱歉提出這麼多問題。
這需要**kwargs
(keyword arguments)語法。
def foo(a=4, b=3):
return a+b
def bar(func, *args, **kwargs):
return func(*args, **kwargs)
print bar(foo, b=12) # prints 16
凡*args
爲任意數量的位置參數,**kwargs
是所有都通過了命名參數
當然,他們只是*args
和**kwargs
按照慣例。您可以將它們命名爲*panda
和**grilled_cheese
以供所有Python關心。
是的,你也可以通過另外一個字典到(或代替)名單:
def bar(func, args=[], kwargs={}):
return func(*args, **kwargs)
bar(foo, {'b':12})
感謝馬克!這是完美的,正是我需要的! – 2010-06-24 16:24:43