您可以使用^{}查看接受哪些参数,以及关键字参数的任何默认值。
演示:>>> def foo(bar, baz, spam='eggs', **kw): pass
...
>>> import inspect
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'baz', 'spam'], varargs=None, keywords='kw', defaults=('eggs',))
>>> inspect.getargspec(foo).args
['bar', 'baz', 'spam']
在Python 3中,您希望使用^{},因为此方法支持新的python3函数参数特性:>>> def foo(bar: str, baz: list, spam: str = 'eggs', *, monty: str = 'python', **kw) -> None: pass
...
>>> import inspect
>>> inspect.getfullargspec(foo)
FullArgSpec(args=['bar', 'baz', 'spam'], varargs=None, varkw='kw', defaults=('eggs',), kwonlyargs=['monty'], kwonlydefaults={'monty': 'python'}, annotations={'baz': , 'return': None, 'spam': , 'monty': , 'bar': })
在Python 3中,inspect.getargspec()应该被视为不推荐使用。
Python 3.4添加了^{} object:>>> inspect.signature(foo)
>>> str(inspect.signature(foo))
"(bar:str, baz:list, spam:str='eggs', *, monty:str='python', **kw) -> None"
>>> inspect.signature(foo).parameters
mappingproxy(OrderedDict([('bar', ), ('baz', ), ('spam', ), ('monty', ), ('kw', )]))
还有更多有趣的签名选择。