2

这个蟒蛇:

data = {}

def f():
    pass

import sys

help(sys.modules[__name__])

打印这个:

Help on built-in module __main__:

NAME
    __main__

FILE
    /foo/bar.py

FUNCTIONS
    f()

DATA
    data = {}

我的问题是,我怎样才能像帮助功能一样获得“数据”对象的列表?我查看了 inspect.getmembers() 但它返回了我不想要的东西,并且为它编写谓词似乎没有必要。

4

2 回答 2

2

您可以阅读实现背后的代码:http help(module): //hg.python.org/cpython/file/110b38c36a31/Lib/pydoc.py#l1060

虽然有点复杂......

于 2012-06-19T12:06:04.867 回答
0

您可以在全局范围内使用内置locals()函数

>>> data = {}
>>> locals()
{'__builtins__': <module 'builtins' (built-in)>, '__name__': '__main__', 'data': {}, '__doc__': None, '__package__': None}

值得注意的是,您显然需要过滤掉内置值,这很容易做到:

>>> {name: value for name, value in locals().items() if not name.startswith("__")}
{'data': {}}

请注意,通常您将像这样解决的任何问题都可以通过使用更好的数据结构得到更好的解决。

于 2012-06-19T10:36:32.133 回答