Посмотрите на модуль inspect - он проведет проверку различных свойств объекта кода для вас.
>>> inspect.getfullargspec(aMethod)
(['arg1', 'arg2'], None, None, None)
Другими результатами являются имена переменных * args и ** kwargs и предоставленные значения по умолчанию. то есть.
>>> def foo(a,b,c=4, *arglist, **keywords): pass
>>> inspect.getfullargspec(foo)
(['a', 'b', 'c'], 'arglist', 'keywords', (4,))
Обратите внимание, что некоторые вызовы могут не быть интроспективными в некоторых реализациях Python. Например, в CPython некоторые встроенные функции, определенные в C, не предоставляют метаданных об их аргументах. В результате вы получите ValueError
в случае использования inspect.getfullargspec()
со встроенной функцией.
Начиная с Python 3.3, вы также можете использовать inspect.signature () , чтобы узнать сигнатуру вызываемого объекта:
>>> inspect.signature(foo)
<Signature (a, b, c=4, *arglist, **keywords)>