![](/img/trans.png)
[英]How to register typing.Callable with Python @singledispatch?
[英]what exactly is python typing.Callable?
我見過typing.Callable
,但我沒有找到任何有用的文檔。 究竟是什么typing.Callable
?
typing.Callable
是您用來指示可調用的類型。 大多數支持()
運算符的 python 類型collections.abc.Callable
類型。 示例包括函數、 classmethod
、 staticmethod
方法、綁定方法和 lambda。
總之,任何帶有__call__
方法(這就是()
的實現方式)的東西都是可調用的。
從 Python 3.11 開始,您無需顯式使用typing.Callable
。 PEP 677引入了隱式 tuple-with-arrow 語法,因此像Callable[[int, str], list[float]]
這樣的東西可以更直觀地表示為(int, str) -> list[float]
。
請參閱 此處的文檔。
簡短版本, Callable
是一種類型提示,指示可以調用的 function或其他 object。
考慮下面的一個簡單示例。 bar
參數是一個可調用的 object,它接受兩個 int 作為參數並返回一個 int。
>>> def foo(bar: Callable[[int, int], int], a: int, b: int) -> int:
... return bar(a, b)
...
>>> foo(int.__add__, 4, 5)
9
>>> class A:
... def __call__(self, a, b):
... return a * b
...
>>> foo(A(), 6, 7)
42
>>> foo(lambda x, y: x - y, 8, 3)
5
>>>
typing
模塊用於類型提示:
該模塊為類型提示提供運行時支持。
該文檔提供了此示例:
def greeting(name: str) -> str:
return 'Hello ' + name
在 function
greeting
中,參數名稱應為str
類型,返回類型為str
。 子類型被接受為 arguments。
typing.Callable
假設您要定義一個 function,它接受兩個整數並對它們執行某種操作,返回另一個 integer:
def apply_func(a: int, b: int, func) -> int:
return func(a, b)
因此, apply_func
中func
參數的預期類型是“可以調用的東西(例如函數),它需要兩個 integer arguments 並返回一個整數”:
typing.Callable[[int, int], int]
使用類型提示使您能夠執行類型檢查。 如果您使用 IDE (如 PyCharm 或 Visual Studio Code),如果您使用意外類型,您將獲得視覺反饋:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.