Ketahui pengendali identiti python dan perbezaan antara == dan is operator

Ketahui pengendali identiti python dan perbezaan antara == dan is operator

Artikel ini terutamanya dikendalikan untuk menjelaskan pengendali penting dalam Python ("Pengendali identiti") Dan bagaimana pengendali identiti berbeza (adalah, tidak) dari pengendali perbandingan (==).

Pengendali identiti

Operator Identiti ("Adakah" dan "tidak") digunakan untuk membandingkan lokasi memori objek. Apabila objek dibuat dalam ingatan alamat memori yang unik diperuntukkan kepada objek tersebut.

  • '==' membandingkan jika kedua -dua nilai objek adalah sama atau tidak.
  • 'adalah' membandingkan jika kedua -dua objek itu tergolong dalam lokasi memori yang sama.

Buat tiga objek rentetan Nama, Nama1, dan Nama2. Objek rentetan Nama dan Nama2 akan memegang nilai yang sama dan Nama1 akan memegang nilai yang berbeza.

Apabila kita membuat objek ini, apa yang berlaku di belakang tempat kejadian, objek itu akan dibuat dalam ingatan dan akan tersedia sepanjang hayat program.

Sekarang anda boleh menggunakan pengendali perbandingan "==" untuk memeriksa sama ada kedua -dua nilai objek adalah sama. Output pengendali perbandingan akan menjadi boolean (Benar atau Salah) nilai.

Buat dan Bandingkan Objek

Sekarang anda telah membandingkan dua nilai untuk menentukan kesamaan, mari kita lihat bagaimana pengendali identiti berfungsi.

Terbina dalam ID() Fungsi digunakan untuk mendapatkan "identiti"Objek. Integer yang akan menjadi unik dan tetap untuk objek sepanjang hayatnya.

Untuk menjadikannya mudah memikirkan ini sebagai kerajaan yang unik ID atau ID EMP diberikan kepada anda, begitu juga nilai integer yang unik diberikan untuk setiap objek.

Nilai integer yang unik

Sekarang anda boleh membandingkan 2 rujukan objek menggunakan "Adakah" pengendali.

Pengendali identiti

Semasa saya membandingkan Nama dan Nama1 atau Nama2 Menggunakan pengendali identiti apa yang dilakukannya di backend adalah hanya berjalan "Id (nama) == id (name2)". Sejak id (nama) dan id (name2) Kedua -duanya berkongsi lokasi memori yang sama, ia kembali Benar.

Sekarang di sini datang bahagian yang menarik. Lihat contoh terdahulu kami di mana kedua -duanya Nama dan Nama1 mempunyai nilai yang sama dan mengembalikan nilai integer yang sama apabila kita menjalankan ID() fungsi. Mengapa awak fikir "Name_new"Dan"Name_le"Objek tidak sama walaupun mereka berkongsi nilai yang sama dari tangkapan skrin di bawah?

Nilai integer

Ini kerana pelaksanaan reka bentuk python. Apabila anda membuat objek integer dalam julat (-5,256) dan objek rentetan lebih besar daripada atau sama dengan 20 chars, bukannya membuat objek yang berbeza pada ingatan untuk nilai yang sama objek ini bertindak sebagai penunjuk kepada objek yang telah dibuat.

Di bawah perwakilan bergambar akan memberi anda idea yang jelas tentang apa yang telah kita lihat setakat ini dalam artikel ini.

Perwakilan diagrammatic
Ringkasan

Dalam artikel ini, kita telah melihat apa itu pengendali identiti. Bagaimana pengendali perbandingan dan pengendali identiti digunakan, pelaksanaan reka bentuk bagaimana objek dibuat dalam ingatan.