[解決済み] Pythonの変数が関数であるかどうかを検出するにはどうすればよいですか?
2022-03-23 13:58:37
質問
変数を持っています。
x
そして、それが関数を指しているかどうかを知りたいのです。
というようなことができればと思っていました。
>>> isinstance(x, function)
でも、そのおかげで
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'function' is not defined
これを選んだ理由は
>>> type(x)
<type 'function'>
解決方法は?
Python 2.xまたはPython 3.2+の場合は、以下のようにします。
callable()
. 以前は非推奨でしたが、現在は非推奨になりましたので、再び使用することができます。議論はこちらで読むことができます。
http://bugs.python.org/issue10518
. でできます。
callable(obj)
Python 3.x 用で 3.2 より前の場合は、オブジェクトに
__call__
属性があります。で行うことができます。
hasattr(obj, '__call__')
よく言われる
types.FunctionTypes
または
inspect.isfunction
のアプローチ(どちらも
全く同じこと
には、いくつかの注意点があります。それは
False
は、Python以外の関数の場合です。ほとんどの場合
組み込み関数
例えば、PythonではなくCで実装されているため、Pythonで実装した場合、Pythonで実装した場合は
False
:
>>> isinstance(open, types.FunctionType)
False
>>> callable(open)
True
だから
types.FunctionType
は、意外な結果をもたらすかもしれません。アヒル型のオブジェクトのプロパティを確認する正しい方法は、アヒルサイズの容器に収まるかどうかではなく、アヒルが鳴くかどうかを尋ねることです。
関連
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Python入門 openを使ったファイルの読み書きの方法
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] 最小限の驚き」と「変更可能なデフォルトの引数
-
[解決済み] 変数を参照渡しする方法を教えてください。
-
[解決済み] 環境変数の値にアクセスする方法
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] Pythonでシングルトンを作成する
-
[解決済み】Pythonに三項条件演算子はありますか?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Pythonの非常に便利な2つのデコレーターを解説
-
ピローによる動的キャプチャ認識のためのPythonサンプルコード
-
Pythonの学習とデータマイニングのために知っておくべきターミナルコマンドのトップ10
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Pythonスクリプトで「Expected 2D array, got 1D array instead: 」というエラーが発生?
-
[解決済み】TypeError: 系列を <class 'float'> に変換することができません。
-
[解決済み】syntaxError: 'continue' がループ内で適切に使用されていない
-
[解決済み】LogisticRegression: Pythonでsklearnを使用して、未知のラベルタイプ: '連続'を使用しています。
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】cアンダースコア式`c_`は、具体的に何をするのですか?