博客 / 詳情

返回

Python 的內置函數 callable

Python 的內置函數 callable() 用於檢查一個對象是否是可調用的(即能否像函數一樣被調用)。當對象可以被調用時返回 True,否則返回 False

詳細説明

  1. 可調用對象類型

    • 函數(包括內置函數、自定義函數)
    • 類(調用類會創建實例)
    • 實現了 __call__ 方法的類實例
    • 方法(綁定方法和非綁定方法)
    • lambda 表達式
  2. 不可調用對象

    • 數字、字符串等基本數據類型
    • 列表、字典等容器類型
    • 沒有實現 __call__ 方法的普通對象實例
  3. 使用示例

    def my_func():
        pass
    
    class MyClass:
        def __call__(self):
            pass
    
    print(callable(my_func))  # True
    print(callable(MyClass))  # True
    print(callable(MyClass()))  # True
    print(callable("hello"))  # False
    print(callable([1,2,3]))  # False
  4. 注意事項

    • 在 Python 3 中,callable() 對於類方法總是返回 True
    • 該函數不能保證調用一定會成功,只是檢查對象是否具備可調用特性
    • 常用於動態調用前檢查對象是否可調用
  5. 應用場景

    • 反射編程時檢查對象是否可執行
    • 插件系統中驗證插件接口
    • 動態調用前進行安全檢查
  6. 底層原理

    • 實際上檢查對象是否實現了 __call__ 方法
    • 對於類,會檢查其元類是否可調用
  7. 歷史變化

    • Python 2.x 中某些情況下會返回 False(如舊式類)
    • Python 3.x 中行為更加一致

這個函數在動態類型檢查和元編程中非常有用,可以幫助開發者編寫更健壯的代碼。

user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.