2

調整可能なパラメーターを持つすべての関数を探しています。

これらの関数の 1 つはmatplotlib.pyplot.figure ().add_axesです。help(matplotlib.pyplot.figure ().add_axes) は、 kwargs辞書に存在する可能性があるそのパラメーターについて説明します。

pydoc.apropos を試しました

from pydoc import apropos

In [8]: apropos ('adjustable')
No handlers could be found for logger "OpenGL.Tk"

In [9]: 

これが apropos(key) で返されたものすべてです。

私が探しているものを見つけるための強引な方法の 1 つは、/usr/share/ から python のソース コードを grep することです。しかし、私は現在のpython環境からそれを行う必要があります(エバリュエーターにロードされているもののみ)。

4

3 に答える 3

1

aproposすべてのモジュールの 1 行の要約のみを検索し、各単一関数の各 docstring を検索することはできません (既にすべてのモジュールをインポートしており、そのaproposdocstring を検索することはかなりのオーバーヘッドです)。

たとえそうであったとしてもadd_axes、検索用語が 1 行の説明の一部ではないため、何も見つかりません。

そのような機能が必要な場合は、自分で実装する必要があります。

于 2013-06-02T20:15:36.203 に答える
1

これは、指定されたパス内の現在のすべてのパッケージをウォークスルーし、一致するパラメーターを見つけるために使用し、一致するたびastに戻る関数を簡単に記述したものです。(filename, funcname, line_no)

import ast
import pkgutil
import os.path

class FindParameter(ast.NodeVisitor):
    def __init__(self, parameter):
        self.parameter = parameter
        self.found = []

    def visit_FunctionDef(self, node):
        for arg in node.args.args:
            if getattr(arg, 'id', None) == self.parameter:
                self.found.append(node)

def apropos(parameter, path=None):
    paramFinder = FindParameter(parameter)
    for importer, modname, is_package in pkgutil.iter_modules(path=path):
        try:
            loader = importer.find_module(modname)
            loader.get_code()
            if loader.source:
                tree = ast.parse(loader.source, filename=loader.filename)
                paramFinder.visit(tree)
        except SyntaxError:
            pass # avoid any broken code in the current path
    return [ (loader.filename, found.name, found.lineno) for found in paramFinder.found ]

all_selfs = apropos('self')
于 2013-06-03T06:35:53.867 に答える