Есть ли способ проанализировать функцию, чтобы она показывала мне информацию о принимаемых аргументах (например, количество аргументов, тип, если возможно, имя аргумента, если он назван) и возвращаемое значение? dir()
, похоже, не делает то, что я хочу. Строка __doc__
иногда включает аргументы метода / функции, но часто этого не происходит.
Как увидеть сигнатуру функции в Python?
Ответы (1)
help(the_funcion)
должен предоставить вам всю эту информацию.
Образец:
>>> help(enumerate)
Help on class enumerate in module __builtin__:
class enumerate(object)
| enumerate(iterable[, start]) -> iterator for index, value of iterable
|
| Return an enumerate object. iterable must be another object that supports
| iteration. The enumerate object yields pairs containing a count (from
| start, which defaults to zero) and a value yielded by the iterable argument
| enumerate is useful for obtaining an indexed list:
| (0, seq[0]), (1, seq[1]), (2, seq[2]), ...
|
| Methods defined here:
|
| __getattribute__(...)
| x.__getattribute__('name') <==> x.name
|
| __iter__(...)
| x.__iter__() <==> iter(x)
|
| next(...)
| x.next() -> the next value, or raise StopIteration
|
| ----------------------------------------------------------------------
| Data and other attributes defined here:
|
| __new__ = <built-in method __new__ of type object>
| T.__new__(S, ...) -> a new object with type S, a subtype of T
person
Jochen Ritzel
schedule
12.12.2010
Сработало как шарм, спасибо! Это другое решение из связанного вопроса также работает:
import inspect print(inspect.getargspec(the_function))
, но help () намного лучше!
- person mindthief; 12.12.2010
Я работаю с Python более 5 лет и не знал об этом. Фантастика!
- person Régis B.; 10.03.2016
__doc__
) - ваш лучший выбор. - person   schedule 12.12.2010__doc__
в своем вопросе, но приняли ее в своем ответе. Из этого, а также из ваших комментариев неясно, что вы действительно ищете. Не могли бы вы уточнить? - person S.Lott   schedule 12.12.2010__doc__
показывает только строку документа функции, а не аргументы. Если вам повезет, то строка документа может объяснить использование аргументов и неявно предоставить информацию, которую я искал. Но функция help () дает вам точную сигнатуру функции (что было моим заявленным требованием), а также строку документа, которая действительно является всем, что вам нужно, поскольку строка документа может содержать дополнительное объяснение, не очевидное только по подписи. Пример ответа на самом деле вызывается для класса, а не для функции, поэтому он кажется более подробным, чем вы ожидаете. - person mindthief   schedule 12.12.2010help(abs)
, кажется, что отображается только строка__doc__
. Но, поскольку вы довольны, это все, что имеет значение. Я до сих пор не понимаю, почему этот вопрос не повторяется полностью. Но я полагаю, что я просто тупица. - person S.Lott   schedule 12.12.2010