0Pricing
Python Academy · Pelajaran

Menjalankan mypy dan Memperbaiki Error Tipe

Konfigurasikan mypy, tafsirkan error, dan tambahkan tipe secara bertahap pada codebase.

Menjalankan mypy dan Memperbaiki Error Tipe adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Menginstal dan Menjalankan mypy

Instal mypy dengan pip dan jalankan pada berkas atau paket. mypy melaporkan galat tipe tanpa mengeksekusi kode Anda.

# 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

Galat mypy Pertama Anda

mypy mendeteksi tipe yang tidak kompatibel, nilai kembalian yang hilang, dan argumen fungsi yang tidak diberi anotasi.

# 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"

Bendera --strict

--strict mengaktifkan banyak pemeriksaan tambahan: anotasi yang hilang, penggunaan Any, impor tanpa tipe, dan lain-lain. Mulailah tanpa bendera ini, lalu tambahkan secara bertahap.

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

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

Mengabaikan Galat

Tambahkan # type: ignore di akhir baris untuk menekan galat tertentu. Gunakan seperlunya, disertai komentar yang menjelaskan alasannya.

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

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

Konfigurasi mypy.ini / pyproject.toml

Simpan pengaturan mypy dalam mypy.ini atau pyproject.toml agar Anda tidak perlu memberikan bendera pada setiap proses menjalankan mypy.

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

[mypy-third_party.*]
ignore_errors = True

Mode Inkremental

mypy menyimpan hasil dalam tembolok di antara proses berjalan. Hanya berkas yang berubah yang diperiksa ulang, sehingga proses berikutnya berlangsung cepat.

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

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

Galat Umum: Tipe Tidak Kompatibel

Galat yang paling sering terjadi: menetapkan atau meneruskan nilai dengan tipe yang salah.

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

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

# Fix:
count = 5

Galat Umum: Ketidakcocokan Tipe Argumen

Meneruskan argumen bertipe salah ke suatu fungsi.

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))

Galat Umum: None Dikembalikan Secara Tak Terduga

Sebuah fungsi dideklarasikan untuk mengembalikan nilai bukan None, tetapi memiliki jalur kode yang mengembalikan None.

# 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

Penyempitan dengan isinstance

Gunakan isinstance untuk mempersempit tipe Union di dalam suatu cabang. mypy memahami hal ini dan mempersempit tipenya.

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

Menggunakan cast

typing.cast(Type, value) memberi tahu mypy untuk memperlakukan suatu nilai sebagai tipe tertentu tanpa memengaruhi runtime. Gunakan hanya jika Anda benar-benar mengetahui sesuatu yang tidak diketahui mypy.

from typing import cast

def get_value() -> object:
    return 42

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

Pemeriksaan Singkat

Apa yang dilakukan dengan menambahkan # type: ignore ke sebuah baris?

Ringkasan

Jalankan mypy script.py untuk memeriksa tipe. Perbaiki penetapan yang tidak kompatibel, ketidakcocokan argumen, dan nilai kembalian yang hilang. Gunakan isinstance untuk mempersempit union, gunakan # type: ignore seperlunya, dan konfigurasikan mypy dalam mypy.ini. Aktifkan --strict secara bertahap.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Menjalankan mypy dan Memperbaiki Error Tipe” gratis?

Ya — teks lengkap “Menjalankan mypy dan Memperbaiki Error Tipe” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Menjalankan mypy dan Memperbaiki Error Tipe”?

Konfigurasikan mypy, tafsirkan error, dan tambahkan tipe secara bertahap pada codebase. Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Menjalankan mypy dan Memperbaiki Error Tipe” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Anotasi Tipe Dasar
  2. Tipe Kompleks: List, Dict, Optional, Union
  3. TypeVar, Class Generik, dan Protocol
  4. Menjalankan mypy dan Memperbaiki Error Tipe
← Kembali ke Python Academy