私はPythonの比較的初心者であり、十分に文書化されていないコードを実行するためにPythonを使用しようとしています. 私の質問は、たとえば、インタラクティブシェルを使用して、関数またはクラスコンストラクターの可能な引数のリストを取得するにはどうすればよいかということです。理想的には、dir() のようなものが欲しいのですが、クラス メンバーではなく、関数の可能な引数の名前をリストする必要があります。
それが不可能な場合、コード内を見ずに関数の引数を推測する方法はありますか?
私はPythonの比較的初心者であり、十分に文書化されていないコードを実行するためにPythonを使用しようとしています. 私の質問は、たとえば、インタラクティブシェルを使用して、関数またはクラスコンストラクターの可能な引数のリストを取得するにはどうすればよいかということです。理想的には、dir() のようなものが欲しいのですが、クラス メンバーではなく、関数の可能な引数の名前をリストする必要があります。
それが不可能な場合、コード内を見ずに関数の引数を推測する方法はありますか?
help(function_object)
指定された関数について知っているすべてのものを Python フォーマットにするために使用します。
inspect.getargspec()
この関数を使用して、受け入れられた引数の名前付きタプルの概要を取得することもできます。その関数の結果を に渡してinspect.formatargspec()
、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(demo)
出力されます。
Help on function demo in module __main__:
demo(foo, bar, eggs='ham')