http://d.hatena.ne.jp/leetmikeal/20140214/1392375216
前回の記事で、変数の型をisinstance関数を使用してチェックできると書きました。
このスクリプトを実行します。
#!/usr/bin/python # -*- coding:utf-8 -*- def func_inst(): return "func inst" if __name__ == '__main__': print type(func_inst) print isinstance(func_inst, function)
結果
<type 'function'> Traceback (most recent call last): File "failed.py", line 9, in <module> print isinstance(func_inst, function) NameError: name 'function' is not defined
あれ?エラーになりました。func_instは"function"のインスタンスではないようです。関数オブジェクトはtype関数で拾ってきた文字列では識別できません。
色々調べてみると、こういうモジュールが見つかりました。
http://docs.python.jp/2.7/library/types.html
これを使うと、
#!/usr/bin/python # -*- coding:utf-8 -*- import types def func_inst(): return "func inst" if __name__ == '__main__': print type(func_inst) print isinstance(func_inst, types.FunctionType)
<type 'function'> True