Silakan dan gunakan isinstancejika Anda membutuhkannya. Ini agak jahat, karena tidak termasuk urutan kustom, iterator, dan hal-hal lain yang mungkin benar-benar Anda butuhkan. Namun, terkadang Anda perlu berperilaku berbeda jika seseorang, misalnya, melewatkan sebuah string. Preferensi saya ada untuk secara eksplisit memeriksa stratau unicodeseperti:
import types
isinstance(var, types.StringTypes)
NB Jangan salah types.StringTypeuntuk types.StringTypes. Yang terakhir menggabungkan strdan unicodeobjek.
The typesModul dianggap oleh banyak untuk menjadi usang dalam mendukung hanya memeriksa secara langsung terhadap jenis objek, jadi jika Anda lebih suka tidak menggunakan atas, Anda alternatif dapat memeriksa secara eksplisit terhadap strdan unicode, seperti ini:
isinstance(var, (str, unicode)):
Edit:
Lebih baik lagi adalah:
isinstance(var, basestring)
Akhiri edit
Setelah salah satu dari ini, Anda dapat kembali berperilaku seolah-olah Anda mendapatkan urutan normal, membiarkan non-urutan meningkatkan pengecualian yang sesuai.
Melihat hal yang "jahat" tentang pengecekan tipe bukanlah bahwa Anda mungkin ingin berperilaku berbeda untuk jenis objek tertentu, itu adalah bahwa Anda secara artifisial membatasi fungsi Anda dari melakukan hal yang benar dengan jenis objek yang tidak terduga yang sebaliknya akan melakukan hal yang benar. Jika Anda memiliki fallback terakhir yang tidak dicentang, Anda menghapus batasan ini. Perlu dicatat bahwa pengecekan tipe terlalu banyak adalah bau kode yang menunjukkan bahwa Anda mungkin ingin melakukan beberapa refactoring, tetapi itu tidak berarti Anda harus menghindarinya dari getgo.