Python で変数が関数を表しているかどうかを確認する方法
Python では、変数が関数を指しているかどうかを確認すると便利です。関数。最初は isinstance(x, function) の使用を検討するかもしれませんが、Python は未定義の関数クラスに対して NameError を発生させます。
Callable Objects と hasattr
変数は関数ですが、Python では callable() が提供されています。 Python 2.x および Python 3.2 の場合、このメソッドは呼び出し可能なオブジェクトをチェックする機能を提供します。あるいは、3.2 より前の Python 3.x の場合は、 hasattr(obj, '__call__') を使用して、オブジェクトが呼び出し可能なオブジェクトの __call__ 属性特性を持っているかどうかを調べることができます。およびinspect.isfunction
types.FunctionTypesまたはinspect.isfunctionを利用するアプローチが提案されていますが、これらの方法には制限があります。 Python 以外の関数の場合は False を返します。 C で実装された組み込み関数は、呼び出し可能であってもこのチェックに失敗します:
>>> isinstance(open,types.FunctionType) 間違い >>> 呼び出し可能(オープン) True
したがって、オブジェクトの呼び出し可能な性質を検証するには、特定のクラス定義への適合性ではなく、その呼び出し可能性を明示的にチェックする必要があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3