8

モジュールから取得したメソッドの引数を把握しようとしています。inspect便利な機能を備えたモジュールを見つけましたgetargspec。私が定義した関数では機能しますが、インポートされたモジュールの関数では機能しません。

import math, inspect
def foobar(a,b=11): pass
inspect.getargspec(foobar)  # this works
inspect.getargspec(math.sin) # this doesn't

次のようなエラーが表示されます。

   File "C:\...\Python 2.5\Lib\inspect.py", line 743, in getargspec
     raise TypeError('arg is not a Python function')
 TypeError: arg is not a Python function

ローカル機能専用に設計されていinspect.getargspecますか、それとも何か間違っていますか?

4

2 に答える 2

14

Python ではなく C で実装されている関数について、この種の情報を取得することは不可能です。

これの理由は、引数が (ある程度) getarg のような方法で渡されるため、(自由形式の) docstring を解析する以外に、メソッドが受け入れる引数を見つける方法がないためです。つまり、どの引数を見つけるのは不可能です。関数を実際に実行せずに受け入れます。

于 2012-07-05T11:18:13.727 に答える