Saya memiliki metode yang terkadang mengembalikan nilai NoneType. Jadi, bagaimana saya bisa mempertanyakan variabel yang merupakan NoneType? Saya perlu menggunakan metode if , misalnya
if not new:
new = '#'
Saya tahu itu cara yang salah dan saya harap Anda mengerti apa yang saya maksud.
None
hanya nilai yang dikembalikan metode Anda yangbool(returnValue)
sama dengan ituFalse
, maka Andaif not new:
harus bekerja dengan baik. Ini kadang-kadang terjadi di lib bawaan - misalnya,re.match
mengembalikan None atau objek pencocokan yang benar.null
danNone
dengan python di sini .Jawaban:
Gunakan
is
operator, seperti iniKenapa ini berhasil?
Karena
None
merupakan objek tunggal tunggalNoneType
dalam Python, kita dapat menggunakanis
operator untuk memeriksa apakah suatu variabel memilikiNone
di dalamnya atau tidak.Mengutip dari
is
dokumen ,Karena hanya ada satu contoh
None
,is
akan menjadi cara yang lebih disukai untuk memeriksaNone
.Dengarkan dari mulut kuda
Mengutip Pedoman Gaya Pengodean Python - PEP-008 (secara bersama-sama didefinisikan oleh Guido sendiri),
sumber
== None
danis None
?None
, keduanya akan menghasilkan hasil yang serupa.pandas
ada DataFrame - untuk itu, saya gunakantype(df) is type(None)
untuk menghindari:The truth value of a DataFrame is ambiguous
sumber
Ini juga dapat dilakukan
isinstance
sesuai dengan jawaban Alex Hall :isinstance
juga intuitif tetapi ada komplikasi yang memerlukan garisNoneType = type(None)
yang tidak diperlukan untuk tipe suka
int
danfloat
.sumber
NoneType
dan karena ituNone
adalah singleton,isinstance
sebaiknya tidak digunakan untuk mendeteksiNone
- sebaliknya Anda harus melakukan seperti yang diterima oleh jawaban, dan gunakanis None
atauis not None
.Seperti yang ditunjukkan oleh komentar Aaron Hall:
Jawaban asli:
Namun, cara paling sederhana, tanpa garis tambahan selain jawaban kapulaga mungkin:
isinstance(x, type(None))
Menggunakan
isinstance()
tidak memerlukan suatu pernyataan-is
dalamif
:Informasi tambahan
Anda juga dapat memeriksa beberapa jenis dalam satu
isinstance()
pernyataan sebagaimana disebutkan dalam dokumentasi . Cukup tulis jenis sebagai tuple.sumber
NoneType
dan karena ituNone
adalah singleton,isinstance
sebaiknya tidak digunakan untuk mendeteksiNone
- sebaliknya Anda harus melakukan seperti yang diterima oleh jawaban, dan gunakanis None
atauis not None
.python 3.6.7
isinstance
tidak digunakan? Saya mengerti bahwais
seharusnya lebih disukai, tetapi ada beberapa kasus di mana bentuk isinst merasa lebih alami (seperti memeriksa beberapa jenis sekaligusisinstance(x, (str, bool, int, type(None)))
). Apakah ini hanya pilihan pribadi atau ada peringatan yang tidak saya sadari?type
2. kemudian memanggilnya 3. lalu mencari jenisNone
- kapanNone
keduanya singleton dan kata kunci. Kelemahan lain: 4. ini sangat tidak standar dan akan menaikkan alis ketika orang melihat kode Anda.x is None
adalah pemeriksaan yang lebih optimal. Saya akan menyarankanx is None or isinstance(x, (str, bool, int))
- tetapi saya juga akan menyarankan Anda berpikir lebih banyak tentang apa yang Anda lakukan ketika Anda melakukan jenis memeriksa jenis yang tidak memiliki banyak kesamaan ...Tidak yakin apakah ini menjawab pertanyaan. Tapi saya tahu ini perlu waktu untuk mencari tahu. Saya sedang menelusuri situs web dan tiba-tiba nama penulis tidak ada lagi. Jadi diperlukan pernyataan cek.
Penulis dapat berupa variabel apa pun dalam kasus ini, dan
None
dapat berupa jenis apa pun yang Anda periksa.sumber
None
singleton,type
sebaiknya tidak digunakan untuk mendeteksiNone
- sebaliknya Anda harus melakukan seperti yang diterima, dan menggunakanis None
atauis not None
.Python 2.7:
atau
==> Benar
sumber
NoneType
dan karena ituNone
adalah singleton,isinstance
sebaiknya tidak digunakan untuk mendeteksiNone
- sebaliknya Anda harus melakukan seperti yang diterima oleh jawaban, dan gunakanis None
atauis not None
.Semoga contoh ini bermanfaat bagi Anda)
Jadi, Anda dapat memeriksa jenis nama variabel
sumber