Python で変数が関数を表しているかどうかを確認する方法
Python では、変数が関数を指しているかどうかを確認すると便利です。関数。最初は isinstance(x, function) の使用を検討するかもしれませんが、Python は未定義の関数クラスに対して NameError を発生させます。
呼び出し可能なオブジェクトと hasattr
変数は関数ですが、Python では callable() が提供されています。 Python 2.x および Python 3.2 の場合、このメソッドは呼び出し可能なオブジェクトをチェックする機能を提供します。あるいは、Python 3.2 より前の 3.x の場合は、 hasattr(obj, '__call__') を使用して、オブジェクトが呼び出し可能なオブジェクトの特徴である __call__ 属性を持っているかどうかを調べることができます。およびinspect.isfunction
types.FunctionTypesまたはinspect.isfunctionを利用するアプローチが提案されていますが、これらの方法には制限があります。 Python 以外の関数の場合は False を返します。 C で実装された組み込み関数は、呼び出し可能であってもこのチェックに合格しません。
したがって、オブジェクトの呼び出し可能な性質を検証するには、適合性ではなく、呼び出し可能性を明示的にチェックする必要があります。特定のクラス定義に。
以上がPython 変数が関数を表しているかどうかを確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。