2014-01-06 59 views
4

我希望能夠判斷一個函數是否在Python 2.7中聲明爲f()f(**kwargs),所以我知道它是否可以接受任意關鍵字參數......但invoke.getargspec.args()在兩種情況下返回[]。有沒有辦法做到這一點?在Python 2.7中區分f()和f(** kwargs)

回答

9

您需要查看inspect.getargspec().keywords。如果是None沒有**kwargs被給出。

inspect.getargspec() documentation

可變參數關鍵字是的***參數或None名。

演示:

>>> import inspect 
>>> def foo(): pass 
... 
>>> def bar(**kwargs): pass 
... 
>>> inspect.getargspec(foo).keywords is None 
True 
>>> inspect.getargspec(bar).keywords is None 
False 
>>> inspect.getargspec(bar).keywords 
'kwargs'