CodeBlanks Logo Icon CodeBlanks

Callable

Callable ile çağrılabilir türleri öğrenirsin.

Callable

Bazen bir fonksiyonu parametre olarak alırsın. Callable, çağrılabilir nesnelerin (fonksiyon, lambda, sınıf) türünü bildirir.

Söz dizimi: Callable[[ArgT1, ArgT2], RetT]. İlk liste parametre türleri, ikinci öğe dönüş türüdür.

from typing import Callable

def apply(fn: Callable[[int], int], x: int) -> int:
    return fn(x)

print(apply(lambda n: n * 2, 5))  # 10

Parametre almayan bir fonksiyon için Callable[[], int] yazarsın. Dönüş türü her zaman bulunur.

Yüksek dereceli fonksiyonlar

Bir fonksiyonu parametre olarak alan ya da fonksiyon döndüren fonksiyonlara yüksek dereceli fonksiyon denir. map, filter ve sorted bunlara örnektir.

Callable hint'i, bu tür fonksiyonların imzasını netleştirir. Örnek: def map_int(fn: Callable[[int], int], items: List[int]) -> List[int]:. Burada fn'in ne yaptığı bellidir.

İç içe Callable da yazılabilir: Callable[[int], Callable[[int], int]] bir tamsayı alıp fonksiyon döndüren fonksiyon demektir.

Uygulama Callable ile apply fonksiyonu

apply(fn: Callable[[int], int], x: int) -> int fonksiyonunu yaz. Gövde return fn(x) içersin. typing modülünden Callable içe aktar. print(apply(lambda n: n * 2, 5)) çağrısını yap.

Başlangıç kodu

main.py
# typing modülünden Callable içe aktar
# apply(fn: Callable[[int], int], x: int) -> int: fn'i x ile çağır
# apply çağrısını lambda n: n * 2 ve 5 argümanlarıyla yazdır

Örnek çözüm

main.py
from typing import Callable

def apply(fn: Callable[[int], int], x: int) -> int:
    return fn(x)

print(apply(lambda n: n * 2, 5))

Beklenen çıktı

10

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Callable[[int], int] ne tür nesne kabul eder?

  • Bir int değer
  • Bir int alıp int döndüren fonksiyon Doğru cevap
  • Bir int listesi
  • Yalnızca bir sınıf

Açıklama: Callable[[int], int] bir int alıp int döndüren fonksiyon türüdür.

2 Callable import et

Soru
from typing import ____

def apply(fn: Callable[[int], int], x: int) -> int:
    return fn(x)
Cevap
from typing import Callable

def apply(fn: Callable[[int], int], x: int) -> int:
    return fn(x)

Açıklama: Callable typing modülünden gelir; çağrılabilir türü bildirir.

3 Callable bölümlerini eşleştir

Kavram Anlamı
Callable[[int], int] int alır, int döndürür
Callable[[], int] Parametresiz, int döndürür
[int, str] Parametre türleri
int (ikinci) Dönüş türü

İleri seviye bölümündeki tüm dersler