Pycontracts.

Paket Python yang memungkinkan untuk mendeklarasikan kendala pada parameter fungsi dan nilai pengembalian
Unduh sekarang

Pycontracts. Peringkat & Ringkasan

Iklan

  • Rating:
  • Lisensi:
  • LGPL
  • Nama Penerbit:
  • Andrea Censi

Pycontracts. Tag


Pycontracts. Keterangan

Paket Python yang memungkinkan untuk mendeklarasikan batasan pada parameter fungsi dan nilai pengembalian PyContracts adalah pustaka Python yang memungkinkan untuk mendeklarasikan batasan pada parameter fungsi dan nilai pengembalian. Ini mendukung sistem tipe dasar, variabel mengikat, kendala aritmatika, dan memiliki beberapa kontrak khusus (terutama untuk array numpy). Ringkasan singkat berikut. Lihat dokumentasi lengkap di: http://andreacensi.github.com/contracts/why: Tujuan pyContracts bukan untuk mengubah Python menjadi bahasa yang diketik secara statis (meskipun Anda bisa sekuat yang Anda inginkan), tetapi juga , untuk menghindari pemeriksaan memakan waktu dan mengaburkan berbagai prasyarat. Bahkan, lebih dari hambatan jenis, saya menemukan manfaat kemampuan untuk memaksakan nilai dan batasan ukuran. Misalnya, "Saya perlu daftar minimal 3 angka positif" dapat dinyatakan sebagai daftar (angka,> 0)). Jika Anda menemukan bahwa PyContracts berlebihan untuk Anda, Anda mungkin ingin mencoba alternatif yang lebih sederhana, seperti TipeCheck. Jika Anda menemukan bahwa pycontracts tidak cukup untuk Anda, Anda mungkin ingin menggunakan Haskell alih-alih Python. Contracts dapat ditentukan dalam tiga cara: * Menggunakan anotasi (untuk Python 3) --- Ini mungkin cara yang paling intuitif: @ kontrak def my_function (A: 'int,> 0', b: 'daftar , n> 0') -> 'daftar ': # membutuhkan b untuk menjadi daftar nonempty, dan nilai # memiliki panjang yang sama. ... * Menggunakan: Jenis: dan: RTYPE: Tag di DOKStrings. Dengan cara ini, mereka akan dimasukkan dalam dokumentasi Sphinx Anda: @ Contracts def my_function (A, B): "" "Deskripsi fungsi.: Ketik A: int,> 0: Type B: N> 0: RTYPE: Daftar "" "... * Menggunakan argumen ke dekorator; Cara paling tidak mengganggu: @Kontrak (A = 'int,> 0', b = 'daftar , n> 0', kumpulan = 'daftar ') def my_function (a, b) Selain itu, ada fungsi utilitas untuk pengecekan nilai manual: periksa ('array (uint8), h> 10, w> 10', gambar) serta kait untuk memperpanjang pycracts dengan jenis kontrak baru: new_contract ('valid_name ', lambda s: isinstance (s, str) dan len (s)> 0) centang (' dict (int: (valid_name, int)) ', karyawan) Status: pycontracts diuji dengan sangat baik dan didokumentasikan, namun saya Menjaga versi menjadi 0,9, karena beberapa variasi sintaksis cenderung dibuat berdasarkan umpan balik dan saran pengguna. Persyaratan: · Python.


Pycontracts. Perangkat Lunak Terkait