2

このPython:

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

help(module)実装の背後にあるコードを読むことができます:http: //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 に答える