在Python 2.7中区分f()和f(**kwargs)

Chr*_*phe 4 python python-2.7

我希望能够判断一个函数是在Python 2.7中声明f()还是f(**kwargs)在Python 2.7中,所以我知道它是否可以接受任意关键字参数......但是invoke.getargspec.args()在两种情况下都会返回[].有办法做到这一点吗?

Mar*_*ers 9

你需要看一下inspect.getargspec().keywords.如果None没有**kwargs给出.

inspect.getargspec()文档:

varargskeywords***参数或的名称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'
Run Code Online (Sandbox Code Playgroud)