如何在Python中查看函数签名?

如何在Python中查看函数签名?,python,introspection,Python,Introspection,是否有一种方法可以内省一个函数,以便它向我显示它所使用的参数(如参数数量、类型(如果可能)、参数名称(如果命名))和返回值的信息dir()似乎不能满足我的要求。\uuuu doc\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu 样本: >>> help(enumerate) Help on class enumerate

是否有一种方法可以内省一个函数,以便它向我显示它所使用的参数(如参数数量、类型(如果可能)、参数名称(如果命名))和返回值的信息
dir()
似乎不能满足我的要求。
\uuuu doc\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu

样本:

>>> 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
>帮助(枚举)
关于模块_内置中类枚举的帮助:
类枚举(对象)
|枚举(iterable[,start])->索引的迭代器,iterable的值
|
|返回枚举对象。iterable必须是另一个支持
|迭代。枚举对象生成包含计数的对(从
|start,默认为零)和iterable参数生成的值
|枚举对于获取索引列表非常有用:
|(0,序号[0]),(1,序号[1]),(2,序号[2])。。。
|
|此处定义的方法:
|
|_uuugetAttribute_uuuu(…)
|x.uuu getattribute_uuuu('name')x.name
|
|_uuuiter_uuuuuuuuu(…)
|x.国际热核聚变实验堆(x)
|
|下一个(…)
|x.next()->下一个值,或提升StopIteration
|
|  ----------------------------------------------------------------------
|此处定义的数据和其他属性:
|
|新的
|T.。\uuuu new\uuuuu(S,…)->类型为S的新对象,是T的子类型

一般来说,文档(不一定是
\uuuuu doc\uuuuu
)是您的最佳选择。要查看函数签名。第一步。阅读代码。第二步。搜索。这里已经回答了好几次了,另外,感谢你的链接,但老实说,我认为我的问题比你转发的问题更简洁明了。这至少可以证明,我确实做了一次搜索,但在搜索几分钟后没有发现任何东西\@思维窃贼:有趣的是,你接受的答案与你的要求完全不符。您明确拒绝了问题中的
\uuuu doc\uuu
字符串,但在回答中接受了它。从这一点以及你的评论来看,不清楚你真正想要的是什么。您能详细说明一下吗?@S.Lott当然,
\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
只显示函数的文档字符串,而不显示参数。如果幸运的话,doc字符串可能会解释参数的用法,并隐式地给出我要查找的信息。但是help()函数为您提供了确切的函数签名(这是我声明的要求)以及文档字符串,这实际上是您所需要的一切,因为文档字符串可能包含额外的解释,而单从签名来看并不明显。答案示例实际上是在类而不是函数上调用的,这就是为什么它看起来比您预期的更详细的原因。非常有用,谢谢!来自一个相关问题的另一个解决方案也有效:
import inspect print(inspect.getargspec(函数))
但是help()更好!我已经使用python 5年多了,但我不知道这一点。好极了