@Jonrsharpe'ın bir yorumda belirttiği gibi , bu şu şekilde yapılabilir typing.Callable
:
from typing import AnyStr, Callable
def my_function(name: AnyStr, func: Callable) -> None:
Sorun, Callable
kendi başına tercüme edilmiştir, Callable[..., Any]
bunun anlamı:
Çağrılabilir, herhangi bir sayıda / türde bağımsız değişken alır ve herhangi bir türden bir değer döndürür. Çoğu durumda, hemen hemen her işlevin geçmesine izin vereceğiniz için istediğiniz bu değildir. İşlev parametrelerinin ve dönüş türlerinin de ipucu verilmesini istiyorsunuz.
İşte en niçin birçok types
içinde typing
bu ekstra türlerini belirtir destek alt komut dosyası için aşırı edilmiştir. Öyleyse, örneğin, sum
iki int
s alan ve bir döndüren bir fonksiyonunuz varsa int
:
def sum(a: int, b: int) -> int: return a+b
Bunun için ek açıklamanız şöyle olacaktır:
Callable[[int, int], int]
diğer bir deyişle, parametreler, dış abonelikte ikinci öğe olarak dönüş türü ile dış abonelikte alt kodlanır. Genel olarak:
Callable[[ParamType1, ParamType2, .., ParamTypeN], ReturnType]
Callable