Pengenalan MyPy

王林
Lepaskan: 2024-08-12 18:33:29
asal
459 orang telah melayarinya

MyPy Introduction

pengenalan

MyPy1 ialah penyemak jenis statik untuk Python. Tidak seperti bahasa bertaip statik seperti C++ atau Java, Python ditaip secara dinamik. Ini bermakna bahawa dalam Python, anda tidak perlu mengisytiharkan jenis pembolehubah secara eksplisit; ia disimpulkan semasa runtime. Contohnya:

Python (Ditaip Secara Dinamik)

num = 4                # `num` is inferred as an integer
newString = "new string"  # `newString` is inferred as a string
Salin selepas log masuk

Sebaliknya, bahasa yang ditaip secara statik memerlukan anda untuk menentukan jenis setiap pembolehubah pada masa penyusunan. Ini membantu menangkap ralat berkaitan jenis semasa pembangunan dan bukannya pada masa jalan.

C++ (Ditaip Statik)

int num = 4;            // `num` is declared as an integer
std::string newString = "new string";  // `newString` is declared as a string
Salin selepas log masuk

Mengapa Menggunakan MyPy?

Dalam bahasa yang ditaip secara dinamik seperti Python, ralat taip boleh berlaku pada masa jalan, yang mungkin membawa kepada pepijat yang lebih sukar untuk dikesan. MyPy menangani ini dengan membenarkan anda menambah petunjuk jenis pada kod Python anda, yang boleh disemak secara statik sebelum pelaksanaan. Ini menawarkan beberapa kelebihan:

  • Pengesanan Ralat Awal: Kenal pasti ralat berkaitan jenis semasa pembangunan dan bukannya menghadapinya semasa masa jalan.
  • Kebolehbacaan Kod yang Dipertingkatkan: Petua taip menjelaskan jenis pembolehubah yang dijangkakan dan hujah fungsi, meningkatkan kebolehbacaan kod.
  • Sokongan IDE yang lebih baik: Menyediakan pelengkapan kod yang dipertingkatkan dan dokumentasi sebaris dalam IDE yang menyokong pembayang jenis.

Contoh dengan MyPy

Berikut ialah contoh mudah yang menunjukkan penggunaan pembayang jenis dengan MyPy:

Tanpa Petunjuk Jenis

def add(a, b):
    return a + b

print(add(5, 3))      # Output: 8
print(add("hello", "world"))  # Output: helloworld
Salin selepas log masuk

Dalam kod di atas, fungsi tambah boleh menerima kedua-dua integer dan rentetan, yang mungkin bukan tingkah laku yang dimaksudkan.

Dengan Petua Jenis

def add(a: int, b: int) -> int:
    return a + b

print(add(5, 3))      # Output: 8
# mypy will report an error for the following line:
# print(add("hello", "world"))  # TypeError: Expected int, got str
Salin selepas log masuk

Dengan menyertakan pembayang jenis (a: int, b: int), anda menentukan bahawa tambah harus berfungsi dengan integer sahaja. MyPy menyemak kod terhadap pembayang jenis ini, menangkap isu berkaitan jenis yang berpotensi lebih awal.

Memasang dan Menjalankan MyPy

Untuk bermula dengan MyPy:

  1. Pemasangan: Pasang MyPy menggunakan pip:
   python3 -m pip install mypy
Salin selepas log masuk
  1. Menjalankan MyPy: Setelah dipasang, anda boleh menjalankan MyPy untuk menyemak kod anda untuk ralat jenis. Gunakan arahan berikut:
   mypy program.py
Salin selepas log masuk

Arahan ini akan menyemak kod anda secara statik, sama seperti cara pengkompil menyemak sintaks dalam C++. Ia akan melaporkan sebarang jenis ralat yang ditemuinya tanpa menjalankan kod tersebut.

Menggunakan MyPy dengan berkesan membolehkan anda menyepadukan faedah menaip statik ke dalam Python, sambil masih menikmati fleksibiliti sifat dinamiknya.

Mari Kodkan Contoh dengan MyPy

Tanpa MyPy

def greeting(name):
    return 'Hello ' + name

# These calls will fail when the program runs, but MyPy will not report an error
greeting(123)
greeting(b"Aniket")
Salin selepas log masuk

Dengan MyPy

Dengan menambahkan anotasi jenis (juga dikenali sebagai pembayang jenis), MyPy boleh mengesan isu yang berpotensi:

def greeting(name: str) -> str:
    return 'Hello ' + name

greeting(3)         # mypy will report: Argument 1 to "greeting" has incompatible type "int"; expected "str"
greeting(b'Alice')  # mypy will report: Argument 1 to "greeting" has incompatible type "bytes"; expected "str"
greeting("World!")  # No error
Salin selepas log masuk

Di sini:

  • name: anotasi str menyatakan bahawa argumen nama mestilah rentetan.
  • -> anotasi str menyatakan bahawa ucapan fungsi akan mengembalikan rentetan.

Bila hendak menggunakan MyPy

MyPy berguna dalam beberapa situasi:

  • Tangkap Ralat Awal: Gunakan MyPy untuk mencari ralat berkaitan jenis sebelum menjalankan kod anda. Ini membantu menangkap kesilapan lebih awal dan meningkatkan kebolehpercayaan kod.

  • Jadikan Kod Lebih Jelas: Menambah pembayang jenis menjadikan kod anda lebih mudah difahami. Ia menunjukkan jenis nilai yang diharapkan, yang membantu orang lain (dan diri masa depan anda) memahami kod anda dengan lebih baik.

  • Tingkatkan Kod Lama: Apabila mengemas kini kod lama, MyPy membantu mencari isu jenis semasa anda menambah petunjuk taip, menjadikan peralihan lebih lancar.

  • Tingkatkan Prototaip: Apabila membina ciri atau prototaip baharu, MyPy membantu memastikan kod baharu berfungsi dengan betul dengan kod sedia ada dengan menguatkuasakan peraturan jenis.

  • Kekalkan Projek Besar: Dalam projek besar dengan ramai penyumbang, MyPy membantu memastikan kod konsisten dan menghalang pepijat berkaitan jenis.

  • Tingkatkan Ciri IDE: Jika anda menggunakan IDE, MyPy menambah baik ciri seperti pelengkapan kod dan navigasi, menjadikan pembangunan lebih mudah.

Menggunakan MyPy membantu anda menulis kod Python yang lebih baik dan lebih dipercayai sambil masih menikmati fleksibiliti Python.

Lembaran curang pantas rasmi untuk mypy


  1. Dokumentasi Rasmi ↩

Atas ialah kandungan terperinci Pengenalan MyPy. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!