Jawaban Martijn menjelaskan apa None dalam Python, dan dengan benar menyatakan bahwa buku itu menyesatkan. Sejak programmer Python sebagai aturan tidak akan pernah mengatakan
Menetapkan nilai ________ 62 _______ ke variabel adalah salah satu cara untuk meresetnya ke keadaan semula, kosong
sulit untuk menjelaskan apa maksud Briggs dengan cara yang masuk akal dan menjelaskan mengapa tidak ada seorang pun di sini yang tampak senang dengannya. Satu analogi yang mungkin bisa membantu
Di Python, nama variabel seperti stiker yang ditempelkan pada objek. Setiap stiker memiliki nama unik yang tertulis di atasnya, dan hanya bisa pada satu objek pada satu waktu, tetapi Anda dapat menempelkan lebih dari satu stiker pada objek yang sama, jika Anda mau. Ketika Anda menulis
F = "fork"Anda menempelkan stiker "F" pada objek string "fork". Jika Anda kemudian menulis
F = None _Anda memindahkan stiker ke objek ________ 62 _______
Apa yang diminta Briggs untuk Anda bayangkan adalah bahwa Anda tidak menulis stiker "F", sudah ada F stiker di None, dan yang Anda lakukan hanyalah memindahkannya, dari None ke "fork". Jadi saat Anda mengetik F = None 3, Anda "menyetel ulang [ting] ke keadaan semula, kosong", jika kami memutuskan untuk memperlakukan None sebagai makna F = None 5
Aku bisa melihat apa yang dia maksud, tapi itu cara yang buruk untuk melihatnya. Jika Anda memulai Python dan mengetik F = None _6, Anda lihat
>>> print(F) Traceback (most recent call last): File "", line 1, in NameError: name 'F' is not defineddan F = None _7 berarti Python tidak mengenali nama F, karena tidak ada stiker seperti itu. Jika Briggs benar dan F = None 3 me-reset F ke keadaan semula, maka seharusnya ada di sana sekarang, dan kita akan melihat
>>> print(F) None _seperti yang kita lakukan setelah kita mengetik F = None _3 dan menempelkan stiker di None
Jadi hanya itu yang terjadi. Pada kenyataannya, Python hadir dengan beberapa stiker yang sudah dilampirkan ke objek (nama bawaan), tetapi yang lain Anda harus menulis sendiri dengan garis seperti >>> print(F) Traceback (most recent call last): File "", line 1, in NameError: name 'F' is not defined 3 dan >>> print(F) Traceback (most recent call last): File "", line 1, in NameError: name 'F' is not defined 4 dan >>> print(F) Traceback (most recent call last): File "", line 1, in NameError: name 'F' is not defined 5, dan kemudian Anda dapat menempelkannya di objek lain nanti (seperti >>> print(F) Traceback (most recent call last): File "", line 1, in NameError: name 'F' is not defined 6 atau F = None 3 . )
Briggs berpura-pura bahwa semua stiker yang mungkin ingin Anda tulis sudah menempel di objek ________ 62 _______
Ringkasan. dalam tutorial ini, Anda akan belajar tentang Python
print(type(None))
Code language: Python (python)7 dan cara menggunakannya dengan benar dalam kode AndaPengantar nilai Python Tidak ada
Dalam Python,
print(type(None))
Code language: Python (python)_7 adalah objek khusus dari kelasprint(type(None))
Code language: Python (python)9. Untuk menggunakan nilaiprint(type(None))
Code language: Python (python)_7, tentukanprint(type(None))
Code language: Python (python)7 sebagai berikutNone
Jika Anda menggunakan fungsi
<class 'NoneType'>
Code language: Python (python)_2 untuk memeriksa jenis nilaiprint(type(None))
Code language: Python (python)7, Anda akan mendapatkan kelasprint(type(None))
Code language: Python (python)9print(type(None))
Code language: Python (python)Keluaran
<class 'NoneType'>
Code language: Python (python)print(type(None))
Code language: Python (python)_7 adalah objek tunggal dari kelasprint(type(None))
Code language: Python (python)9. Ini berarti Python membuat satu dan hanya satu objekprint(type(None))
Code language: Python (python)7 saat runtimeOleh karena itu, jika Anda menggunakan persamaan (
<class 'NoneType'>
Code language: Python (python)_8) atau<class 'NoneType'>
Code language: Python (python)9 untuk membandingkanprint(type(None))
Code language: Python (python)7 denganprint(type(None))
Code language: Python (python)7, Anda akan mendapatkan hasilprint(None == None) print(None is None)
Code language: Python (python)2print(None == None) print(None is None)
Code language: Python (python)Keluaran
True True
Sebaiknya gunakan operator
print(None == None) print(None is None)
Code language: Python (python)_3 atauprint(None == None) print(None is None)
Code language: Python (python)4 untuk membandingkan nilai denganprint(type(None))
Code language: Python (python)7Alasannya adalah objek yang ditentukan pengguna dapat mengubah perilaku operator kesetaraan dengan mengganti metode
print(None == None) print(None is None)
Code language: Python (python)6. Misalnyaclass Apple: def __eq__(self, other): return True apple = Apple() print(apple == None)
Code language: Python (python)Keluaran
True
Code language: Python (python)Perhatikan bahwa Anda tidak dapat mengesampingkan perilaku operator
<class 'NoneType'>
Code language: Python (python)_9 seperti yang Anda lakukan dengan operator kesetaraan (<class 'NoneType'>
Code language: Python (python)8)Penting juga untuk dicatat bahwa objek None memiliki fitur berikut
print(type(None))
Code language: Python (python)7 bukan nol (0, 0. 0, …)print(type(None))
Code language: Python (python)7 tidak sama denganTrue True
Code language: Python (python)1print(type(None))
Code language: Python (python)7 tidak sama dengan string kosong (True True
Code language: Python (python)3)- Membandingkan
print(type(None))
Code language: Python (python)_7 dengan nilai apa pun akan mengembalikanTrue True
print(type(None))
Code language: Python (python)7 itu sendiri
Aplikasi dari objek Python None
Mari kita ambil beberapa contoh praktis menggunakan objek
print(type(None))
Code language: Python (python)71) Menggunakan Python None sebagai nilai awal untuk sebuah variabel
Ketika sebuah variabel tidak memiliki nilai awal yang berarti, Anda dapat menetapkan
print(type(None))
Code language: Python (python)7 padanya, seperti inistate = None
Code language: Python (python)Kemudian Anda dapat memeriksa apakah variabel diberi nilai atau tidak dengan memeriksanya dengan
print(type(None))
Code language: Python (python)7 sebagai berikutif state is None: state = 'start'
Code language: Python (python)2) Menggunakan objek Python None untuk memperbaiki masalah argumen default yang bisa berubah
Fungsi berikut menambahkan warna ke daftar
def append(color, colors=[]): colors.append(color) return colors
Code language: Python (python)Ini berfungsi seperti yang diharapkan jika Anda melewati daftar yang ada
print(type(None))
Code language: Python (python)0Keluaran
print(type(None))
Code language: Python (python)1Namun, masalah muncul saat Anda menggunakan nilai default dari parameter kedua. Misalnya
print(type(None))
Code language: Python (python)2Keluaran
print(type(None))
Code language: Python (python)_3Masalahnya adalah fungsi membuat daftar setelah ditentukan dan menggunakan daftar yang sama di setiap panggilan yang berurutan