def signature(function):
"""Return the signature of the given function (possibly without variable
positional and keyword arguments) as a string.
If available, the result should be determined by function
:func:`~inspect.signature` of module :mod:`inspect` (Python 3).
If something wrents wrong, a less general costum made string is
returned (Python 2).
"""
try:
return str(inspect.signature(function))
except BaseException:
argspec = inspect.getargspec(function)
args = argspec.args if argspec.args else []
defaults = argspec.defaults if argspec.defaults else []
strings = []
for arg, default in zip_longest(reversed(args), reversed(defaults)):
if default is None:
strings.insert(0, arg)
else:
strings.insert(0, '%s=%s' % (arg, default))
return '(%s)' % ', '.join(strings)
评论列表
文章目录