Ada cara yang sangat Pythonic untuk menulis ekspresi itu tanpa secara eksplisit menulis blok coba-kecuali untuk StopIteration
:
# some_iterable is some collection that can be iterated over
# e.g., a list, sequence, dict, set, itertools.combination(...)
for value in some_iterable:
print(value)
Anda dapat membaca PEPs 234 255 yang relevan jika Anda ingin tahu lebih banyak di balik mengapa StopIteration
diperkenalkan dan logika di balik iterator.
Prinsip umum dalam python adalah memiliki satu cara untuk melakukan sesuatu (lihat import this
), dan lebih disukai yang indah, eksplisit, mudah dibaca, dan sederhana, yang memenuhi metode pythonic. Kode setara Anda hanya diperlukan karena python tidak memberikan hasNext
fungsi anggota kepada iterator ; lebih suka orang untuk hanya mengulangi iterator secara langsung (dan jika Anda perlu melakukan sesuatu yang lain untuk hanya mencoba membacanya dan menangkap pengecualian).
Penangkapan otomatis StopIteration
pengecualian di akhir iterator ini masuk akal dan merupakan analog dari yang EOFError
dibangkitkan jika Anda membaca melewati akhir file.