Pythonでisinstance() 関数を使用し変数が関数かどうかを検出してみます。
isinstance()関数は、括弧内に引数,パラメータとして渡されたオブジェクトが括弧内で指定したタイプを持っている場合に「True(真)」を返し、そうでない場合に「False(偽)」を返します。
■Python
Google Colaboratory(Google Colab),2022年11月25日現在、Python 3.7.15を使用している。
■isinstance() 関数を使用し変数が関数かどうかを検出する
では、isinstance() 関数を使用し変数が関数かどうかを検出するスクリプトを書いていきます。
■コード
import types def test_a(a, b): return a+b print(isinstance(test_a, types.FunctionType)) value_1 = 123 print(isinstance(value_1, types.FunctionType))
まずは、def文を用いてtest_aという関数を定義する。関数の括弧内には引数,パラメータとしてa,bを設定します。設定後、関数が呼び出された時に実行する処理をdef文内に記述します。今回は定義した関数に渡された引数,パラメータを算術演算子を用いて加算(引き算,”+”(プラス))を行い、演算された結果をreturnとして返すものです。
関数を定義後、isinstance()を用います。括弧内にはまず第1の引数,パラメータとしてオブジェクトを渡します。今回は定義した関数名であるtest_aを渡します。次に第2の引数,パラメータとしてタイプを渡します。今回はimportでtypesモジュール(Pythonの標準ライブラリ)を呼び出し、「types.FunctionType」と記述しユーザー定義関数を渡します。これで、指定したタイプ(ユーザー定義関数)を持っている場合に「True(真)」を返し、そうでない場合に「False(偽)」を返します。返された情報をprint()で出力します。
次に今回は比較としてvalue_1という変数を定義し、その中に「123」という数値を格納します。格納後、先ほどと同じようにisinstance()を用います。括弧内には第1の引数,パラメータとしてオブジェクトを渡します。今回は定義した関数名であるtest_aを渡します。次に第2の引数,パラメータとしてタイプを渡します。タイプは「types.FunctionType」と記述しユーザー定義関数を渡します。これで指定した指定したタイプ(ユーザー定義関数)を持っているか、そうでないかを確認し、確認された情報が返されます。返された情報をprint()で出力します。
■実行・検証
このセルを保存し、Google Colaboratory上で、セルを実行してみます。
実行してみると、isinstance()を用いて、2つの変数が関数であるか、そうではないかを確認してみましたが、test_aの方は、「True(真)」が出力され、数値を格納した変数であるvalue_1は「False(偽)」と出力されました。
コメント