Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 列出所有函数参数名称(无docu)_Python_Introspection - Fatal编程技术网

Python 列出所有函数参数名称(无docu)

Python 列出所有函数参数名称(无docu),python,introspection,Python,Introspection,我是Python的相对初学者,我正在尝试使用它来运行一些没有很好文档记录的代码。我的问题是,例如,如何使用交互式shell获取函数或类构造函数的可能参数列表。理想情况下,我希望有类似dir()的内容,但它不应该列出类成员,而应该列出函数的可能参数名称 如果不可能,有没有其他方法可以在不查看代码内部的情况下推断函数参数?使用帮助(function\u object)将它所知道的关于给定函数的所有内容都用python格式化 您还可以使用获取已接受参数的命名元组概述。您也可以将该函数的结果传递给格式化

我是Python的相对初学者,我正在尝试使用它来运行一些没有很好文档记录的代码。我的问题是,例如,如何使用交互式shell获取函数或类构造函数的可能参数列表。理想情况下,我希望有类似dir()的内容,但它不应该列出类成员,而应该列出函数的可能参数名称

如果不可能,有没有其他方法可以在不查看代码内部的情况下推断函数参数?

使用
帮助(function\u object)
将它所知道的关于给定函数的所有内容都用python格式化

您还可以使用获取已接受参数的命名元组概述。您也可以将该函数的结果传递给格式化为python函数:

>>> from inspect import getargspec, formatargspec
>>> def demo(foo, bar, eggs='ham'): pass
... 
>>> getargspec(demo)
ArgSpec(args=['foo', 'bar', 'eggs'], varargs=None, keywords=None, defaults=('ham',))
>>> formatargspec(*getargspec(demo))
"(foo, bar, eggs='ham')"
对于上述示例函数,
帮助(演示)
打印:

Help on function demo in module __main__:

demo(foo, bar, eggs='ham')
使用
help(function\u object)
将python所知道的关于给定函数的所有内容格式化

您还可以使用获取已接受参数的命名元组概述。您也可以将该函数的结果传递给格式化为python函数:

>>> from inspect import getargspec, formatargspec
>>> def demo(foo, bar, eggs='ham'): pass
... 
>>> getargspec(demo)
ArgSpec(args=['foo', 'bar', 'eggs'], varargs=None, keywords=None, defaults=('ham',))
>>> formatargspec(*getargspec(demo))
"(foo, bar, eggs='ham')"
对于上述示例函数,
帮助(演示)
打印:

Help on function demo in module __main__:

demo(foo, bar, eggs='ham')

您需要
检查.getargspec

>>> import inspect
>>> def foo(bar, baz):
...     pass
... 
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'baz'], varargs=None, keywords=None, defaults=None)

您需要
检查.getargspec

>>> import inspect
>>> def foo(bar, baz):
...     pass
... 
>>> inspect.getargspec(foo)
ArgSpec(args=['bar', 'baz'], varargs=None, keywords=None, defaults=None)

如果您在*nix环境中,请使用BPython请记住-在Python中,函数可能会占用一些时间,因此这可能没有多大用处。@thefourtheye可能更好。@AshwiniChaudhary我相信这只是一个品味问题。我喜欢Ubuntu中的bpython。:)如果您在*nix环境中,请使用BPython请记住-在Python中,函数可能会占用一些时间,因此这可能没有多大用处。@thefourtheye可能更好。@AshwiniChaudhary我相信这只是一个品味问题。我喜欢Ubuntu中的bpython。:)谢谢这就是我要找的汉克斯!这就是我一直在寻找的