Menggunakan anotasi fungsi Python 3, dimungkinkan untuk menentukan jenis item yang terdapat dalam daftar homogen (atau koleksi lain) untuk tujuan jenis yang mengisyaratkan di PyCharm dan IDE lainnya?
Contoh kode pseudo-python untuk daftar int:
def my_func(l:list<int>):
pass
Saya tahu itu mungkin menggunakan Docstring ...
def my_func(l):
"""
:type l: list[int]
"""
pass
... tapi saya lebih suka gaya anotasi jika memungkinkan.
python
python-3.x
type-hinting
Eric W.
sumber
sumber
type object is not subscriptable
saat mendefinisikan fungsi. Jelas Anda dapat menggunakan string:def my_func(L: 'list[int]')
tetapi saya tidak tahu apakah PyCharm akan menguraikannya saat mengurai dokumen ...'list[int]'
, maaf jika itu tidak jelas.Jawaban:
Menjawab pertanyaan saya sendiri; jawaban TLDR adalah
TidakYa .Perbarui 2
Pada September 2015, Python 3.5 dirilis dengan dukungan untuk Type Hints dan menyertakan modul pengetikan baru . Ini memungkinkan spesifikasi jenis yang terdapat dalam koleksi. Mulai November 2015, JetBrains PyCharm 5.0 mendukung penuh Python 3.5 untuk menyertakan Petunjuk Jenis seperti yang diilustrasikan di bawah ini.
Perbarui 1
Mulai Mei 2015, PEP0484 (Type Hints) telah diterima secara resmi. Implementasi draf juga tersedia di github di bawah ambv / typehinting .
Jawaban Asli
Pada Agustus 2014, saya telah mengonfirmasi bahwa tidak mungkin menggunakan anotasi jenis Python 3 untuk menentukan jenis dalam koleksi (mis: daftar string).
Penggunaan dokumen yang diformat seperti reStructuredText atau Sphinx adalah alternatif yang layak dan didukung oleh berbagai IDE.
Tampaknya Guido juga mempertimbangkan gagasan memperluas anotasi tipe dalam semangat mypy: http://mail.python.org/pipermail/python-ideas/2014-August/028618.html
sumber
Sekarang Python 3.5 secara resmi keluar, ada modul pendukung Type Hints -
typing
danList
"type" yang relevan untuk wadah generik.Dengan kata lain, sekarang Anda dapat melakukan:
sumber
Jenis komentar telah ditambahkan sejak PEP 484
Ini saat ini berfungsi untuk saya di PyCharm dengan Python 3.6.4
Contoh Gambar di Pycharm
sumber
Dengan dukungan dari BDFL, hampir pasti sekarang bahwa python (mungkin 3.5) akan menyediakan sintaks standar untuk petunjuk tipe melalui anotasi fungsi.
https://www.python.org/dev/peps/pep-0484/
Seperti yang direferensikan di PEP, ada pemeriksa tipe eksperimental (sejenis pylint, tetapi untuk tipe) yang disebut mypy yang sudah menggunakan standar ini, dan tidak memerlukan sintaks baru.
http://mypy-lang.org/
sumber
Pada Python 3.9, tipe bawaan bersifat umum sehubungan dengan anotasi tipe (lihat PEP 585 ). Ini memungkinkan untuk secara langsung menentukan jenis elemen:
Berbagai alat mungkin mendukung sintaks ini lebih awal dari Python 3.9. Jika anotasi tidak diinspeksi pada waktu proses, sintaksnya valid menggunakan kutipan atau
__future__.annotations
.sumber