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'