Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimanakah Saya Boleh Memeriksa dengan Amanah sama ada Objek Boleh Diulang dalam Python?

Bagaimanakah Saya Boleh Memeriksa dengan Amanah sama ada Objek Boleh Diulang dalam Python?

Linda Hamilton
Linda Hamiltonasal
2024-12-09 01:31:13427semak imbas

How Can I Reliably Check if an Object is Iterable in Python?

Menentukan Kebolehubahan Objek dalam Python

Lelaran melalui jujukan elemen ialah operasi asas dalam Python. Untuk menentukan sama ada objek menyokong lelaran, seseorang mungkin tertanya-tanya sama ada wujud kaedah mudah seperti isiterable.

hasattr(myObj, '__iter__')

Penyelesaian yang disebut dalam soalan, hasattr(myObj, '__iter__'), menyemak kehadiran kaedah __iter__ dalam objek. Walaupun ia berfungsi untuk kebanyakan jenis jujukan, ia gagal dalam Python 2 apabila mengendalikan rentetan.

Fungsi Terbina Dalam Iter

Pendekatan yang lebih mudah adalah dengan menggunakan iter fungsi terbina dalam. Ia cuba memanggil kaedah __iter__ objek atau kaedah __getitem__ dalam kes rentetan, menjadikannya sesuai untuk julat iterable yang lebih luas.

try:
    some_object_iterator = iter(some_object)
except TypeError as te:
    print(some_object, 'is not iterable')

Taip Itik

Satu lagi pendekatan Pythonic ialah menerima penaipan itik. Ini melibatkan andaian bahawa objek boleh diubah dan mengendalikan pengecualian jika tidak. Gaya EAFP (Easier to Ask Forgiveness than Permission) sering digunakan untuk ini:

try:
    _ = (e for e in my_object)
except TypeError:
    print(my_object, 'is not iterable')

Modul Koleksi

Modul koleksi Python menawarkan kelas asas abstrak untuk diperiksa untuk kelas atau contoh kebolehubahan. Walau bagaimanapun, kelas ini tidak meliputi semua kes, terutamanya yang boleh diulang dengan kaedah __getitem__.

from collections.abc import Iterable

if isinstance(e, Iterable):
    # e is iterable

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memeriksa dengan Amanah sama ada Objek Boleh Diulang dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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