首頁  >  文章  >  後端開發  >  Python中如何判斷變數是否代表函數?

Python中如何判斷變數是否代表函數?

Susan Sarandon
Susan Sarandon原創
2024-10-18 20:00:31867瀏覽

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

偵測變數是否為函數

在 Python 中,決定變數是否代表函數可能會令人困惑。直覺的方法 isinstance(x, function) 由於未定義的“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>

類型和檢查的注意事項

當types.FunctionTypes 和檢查時.isfunction 方法存在,它們可能會提供意想不到的結果。非Python 函數(例如許多內建函數)使用以下方法返回False:

<code class="python">import types, inspect
isinstance(open, types.FunctionType) # False
callable(open) # True</code>

最佳實踐:鴨子類型

而不是依賴isinstance 或檢查,首選方法是檢查物件是否可以被調用,模仿「鴨子類型」原則:

<code class="python">def quacks_like_a_function(x):
    return callable(x)</code>

以上是Python中如何判斷變數是否代表函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn