ホームページ > バックエンド開発 > Python チュートリアル > Python で変数が関数を表しているかどうかを検出する方法は?

Python で変数が関数を表しているかどうかを検出する方法は?

Susan Sarandon
リリース: 2024-10-18 20:00:31
オリジナル
969 人が閲覧しました

How to Detect Whether a Variable Represents a Function in Python?

変数が関数であるかどうかの検出

Python では、変数が関数を表しているかどうかを判断するのは複雑な場合があります。直感的なアプローチである isinstance(x, function) は、未定義の「関数」参照のため失敗します。

解決策 1: callable()

Python 2.x の場合または 3.2 の callable() は、直接的かつ簡単なチェックを提供します。

<code class="python">callable(x)</code>
ログイン後にコピー

解決策 2: call 属性 (Python 3.x Before 3.2)

Python 3.2 より前では、オブジェクトの __call__ 属性を検査する必要があります:

<code class="python">hasattr(x, '__call__')</code>
ログイン後にコピー

型と検査に関する警告

while types.FunctionTypes および検査.isfunction メソッドが存在しますが、予期しない結果が生じる可能性があります。多くの組み込み関数などの Python 以外の関数は、次のメソッドを使用して False を返します。

<code class="python">import types, inspect
isinstance(open, types.FunctionType) # False
callable(open) # True</code>
ログイン後にコピー

ベスト プラクティス: ダック タイピング

isinstance や Inspection に依存するのではなく、推奨されるアプローチは、「アヒル型」の原則を模倣して、オブジェクトを呼び出すことができるかどうかを確認することです。

<code class="python">def quacks_like_a_function(x):
    return callable(x)</code>
ログイン後にコピー

以上がPython で変数が関数を表しているかどうかを検出する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート