0Pricing
Python Academy · Ders

mypy Çalıştırma ve Tür Hatalarını Düzeltme

mypy'ı yapılandırın, hataları yorumlayın ve bir kod tabanını aşamalı olarak türlendirin.

mypy Çalıştırma ve Tür Hatalarını Düzeltme, CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 4. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

mypy'yi Kurma ve Çalıştırma

mypy'yi pip ile kurup bir dosya veya paket üzerinde çalıştırın. Kodunuzu çalıştırmadan tür hatalarını bildirir.

# pip install mypy

# Check a single file:
# mypy script.py

# Check a package:
# mypy mypackage/

# Strict mode (recommended for new code):
# mypy --strict script.py

İlk mypy Hatanız

mypy; uyumsuz türleri, eksik dönüş değerlerini ve açıklanmamış işlev bağımsız değişkenlerini algılar.

# script.py
def add(a, b):   # mypy: Missing type annotation
    return a + b

result: int = add("hello", 1)  # str, not int

# mypy output:
# error: Returning Any from function declared to return "int"

--strict Bayrağı

--strict, eksik açıklamalar, Any kullanımı ve türü belirtilmemiş içe aktarmalar gibi birçok ek denetimi etkinleştirir. Bu seçenek olmadan başlayıp zamanla ekleyin.

# Most important strict flags individually:
# --disallow-untyped-defs
# --disallow-any-generics
# --warn-return-any
# --no-implicit-reexport

# Or all at once:
# mypy --strict mypackage/

Hataları Yok Sayma

Belirli bir hatayı bastırmak için satırın sonuna # type: ignore ekleyin. Bunu, nedenini açıklayan bir yorumla birlikte ve ölçülü kullanın.

import third_party  # type: ignore[import]  # no stub available

x: int = get_dynamic_value()  # type: ignore[assignment]

mypy.ini / pyproject.toml Yapılandırması

Her çalıştırmada bayrakları geçirmeniz gerekmemesi için mypy ayarlarını mypy.ini veya pyproject.toml dosyasında saklayın.

# mypy.ini
[mypy]
python_version = 3.11
strict = True
ignore_missing_imports = True

[mypy-third_party.*]
ignore_errors = True

Artımlı Mod

mypy, çalıştırmalar arasındaki sonuçları önbelleğe alır. Yalnızca değişen dosyalar yeniden denetlenir; böylece sonraki çalıştırmalar hızlanır.

# First run:
# mypy mypackage/   — full analysis, ~5 s

# Second run (nothing changed):
# mypy mypackage/   — Success: no issues in 0 source files (0.3 s)

Yaygın Hata: Uyumsuz Türler

En sık görülen hata, yanlış türdeki bir değeri atamak veya geçirmektir.

# error: Incompatible types in assignment
# (expression has type "str", variable has type "int")

count: int = 0
count = "five"   # error

# Fix:
count = 5

Yaygın Hata: Bağımsız Değişken Türü Uyuşmazlığı

Bir işleve yanlış türde bağımsız değişkenler geçirmek.

def greet(name: str) -> str:
    return f"Hello, {name}"

# error: Argument 1 to "greet" has incompatible type "int"
greet(42)   # error

# Fix:
greet(str(42))

Yaygın Hata: Beklenmedik Şekilde None Döndürme

None olmayan bir değer döndüreceği bildirilen bir işlevin, None döndüren bir kod yoluna sahip olması.

# error: Missing return statement
def find(items: list[int], target: int) -> int:
    for item in items:
        if item == target:
            return item
    # Missing: no return if not found!

# Fix:
def find2(items: list[int], target: int) -> int | None:
    for item in items:
        if item == target:
            return item
    return None

isinstance ile Türü Daraltma

Bir dal içindeki Union türünü daraltmak için isinstance kullanın. mypy bunu anlar ve türü daraltır.

def process(value: int | str) -> str:
    if isinstance(value, int):
        return str(value * 2)   # mypy knows value is int here
    return value.upper()         # mypy knows value is str here

cast Kullanımı

typing.cast(Type, value), çalışma zamanında bir etkisi olmadan mypy'ye bir değeri belirli bir tür olarak ele almasını söyler. Yalnızca mypy'den daha iyi bildiğinizden emin olduğunuzda kullanın.

from typing import cast

def get_value() -> object:
    return 42

result = cast(int, get_value())   # mypy treats result as int
print(result + 1)   # 43

Hızlı Kontrol

Bir satıra # type: ignore eklemek ne yapar?

Özet

Türleri denetlemek için mypy script.py çalıştırın. Uyumsuz atamaları, bağımsız değişken uyuşmazlıklarını ve eksik dönüşleri düzeltin. Birleşim türlerini daraltmak için isinstance kullanın, # type: ignore ifadesini ölçülü kullanın ve mypy'yi mypy.ini içinde yapılandırın. --strict seçeneğini zamanla etkinleştirin.

Sıkça Sorulan Sorular

“mypy Çalıştırma ve Tür Hatalarını Düzeltme” dersi ücretsiz mi?

Evet — “mypy Çalıştırma ve Tür Hatalarını Düzeltme” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“mypy Çalıştırma ve Tür Hatalarını Düzeltme” dersinde ne öğreneceğim?

mypy'ı yapılandırın, hataları yorumlayın ve bir kod tabanını aşamalı olarak türlendirin. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 4. dersidir.

“mypy Çalıştırma ve Tür Hatalarını Düzeltme” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Temel Tür Ek Açıklamaları
  2. Karmaşık Türler: List, Dict, Optional, Union
  3. TypeVar, Genel Sınıflar ve Protocol
  4. mypy Çalıştırma ve Tür Hatalarını Düzeltme
← Python Academy Sayfasına Dön