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