Kebijaksanaan standar adalah bahwa string Python tidak dapat diubah. Anda tidak dapat mengubah nilai string, hanya referensi ke string. Seperti itu Show
x = "hello" x = "goodbye" # New string! Yang menyiratkan bahwa setiap kali Anda membuat perubahan pada variabel string, Anda sebenarnya menghasilkan string baru. Karena itu, tutorial di luar sana memperingatkan Anda untuk menghindari rangkaian string di dalam loop dan menyarankan untuk menggunakan join sebagai gantinya untuk alasan kinerja. Bahkan dokumentasi resmi mengatakan demikian Ini salah. Semacam Ada kasus umum ketika string dalam Python sebenarnya bisa berubah. Saya akan menunjukkan kepada Anda sebuah contoh dengan memeriksa ID unik objek string menggunakan fungsi id() bawaan, yang hanya merupakan alamat memori. Jumlahnya berbeda untuk setiap objek. (Objek dapat dibagikan, seperti dengan magang. ) Saya menggabungkan dua string tetapi alamat memori tidak berubah Untuk pemeriksaan kewarasan tambahan, mari buat "penunjuk" kita sendiri dan lihat apakah itu menunjuk ke string asli atau yang dimodifikasi Jika string benar-benar tidak dapat diubah, maka alamat yang kami simpan di b akan mengarah ke string asli. Namun, kami melihat bahwa string yang dicetak setara Kita dapat mencoba pengujian lain untuk melihat seberapa sering kita mendapatkan objek string baru dengan melakukan 10.000 penggabungan kecil Hanya 46 dari 10.000 rangkaian yang mengalokasikan string baru Jadi apa yang terjadi di sini? CPython pintar. Jika tidak ada referensi lain ke string, maka string akan mencoba untuk memutasikan string alih-alih mengalokasikan yang baru. Meskipun terkadang perlu mengubah ukuran buffer jika string menjadi terlalu besar, seperti vektor C++ atau Daftar C# Kita bisa melihat petunjuk pertama dalam kode untuk ini di file CPython. Ia mencoba mengurangi jumlah referensi menjadi 1 jika memungkinkan saat melakukan penggabungan string Sekarang lihat PyUnicode_Append() di. Jika string dapat dimodifikasi (hanya memiliki 1 referensi dan tidak diinternir), maka string akan mencoba menambahkan di tempatnya. unicode_resize() akan melihat apakah itu cocok atau jika alokasi baru perlu dibuat Itu dia. Bukti bahwa Anda dapat mengubah string dengan Python Apakah ini benar-benar dianggap sebagai mutabilitas? . String akan tetap dibuang jadi ini hanya pengoptimalan untuk menggunakan kembali memori. Hal penting yang dapat diambil di sini adalah Anda tidak mengalokasikan string baru setiap saat seperti yang dikatakan internet Bisa berubah adalah cara mewah untuk mengatakan bahwa keadaan internal objek diubah/bermutasi. Jadi, definisi paling sederhana adalah. Objek yang keadaan internalnya dapat diubah dapat diubah. Di sisi lain, immutable tidak mengizinkan perubahan apa pun pada objek setelah dibuat Kedua status ini merupakan bagian integral dari struktur data Python. Jika Anda ingin menjadi lebih berpengetahuan tentang seluruh Struktur Data Python, ikuti kursus gratis ini yang mencakup banyak struktur data dalam Python termasuk struktur data tuple yang tidak dapat diubah. Anda juga akan menerima sertifikat pada penyelesaian yang pasti akan menambah nilai portofolio Anda Definisi yang Dapat DiubahBisa berubah adalah ketika sesuatu dapat diubah atau memiliki kemampuan untuk berubah. Dalam Python, 'bisa berubah' adalah kemampuan objek untuk mengubah nilainya. Ini sering merupakan objek yang menyimpan kumpulan data Definisi yang tidak berubahAbadi adalah ketika tidak ada perubahan yang mungkin dari waktu ke waktu. Dalam Python, jika nilai suatu objek tidak dapat diubah dari waktu ke waktu, maka itu dikenal sebagai tidak dapat diubah. Setelah dibuat, nilai objek ini bersifat permanen Daftar objek yang Dapat Diubah dan Tidak Dapat DiubahObjek tipe bawaan yang bisa berubah adalah
Objek tipe bawaan yang tidak dapat diubah adalah
Mutabilitas objek adalah salah satu karakteristik yang membuat Python menjadi bahasa yang diketik secara dinamis. Meskipun Mutable dan Immutable dalam Python adalah konsep yang sangat mendasar, kadang-kadang bisa sedikit membingungkan karena sifat intransitif dari kekekalan. Objek dengan PythonDalam Python, semuanya diperlakukan sebagai objek. Setiap objek memiliki tiga atribut ini
Meskipun ID dan Jenis tidak dapat diubah setelah dibuat, nilai dapat diubah untuk objek yang Dapat Diubah Lihat kursus sertifikat python gratis ini untuk memulai dengan Python Objek yang Dapat Diubah dengan PythonSaya percaya, daripada mendalami aspek teori bisa berubah dan tidak berubah dalam Python, kode sederhana akan menjadi cara terbaik untuk menggambarkan apa artinya dalam Python. Oleh karena itu, mari kita bahas kode di bawah ini langkah demi langkah #Membuat daftar yang berisi nama kota di India _# Mencetak elemen dari daftar kota, dipisahkan dengan koma dan spasi
#Mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal
#Menambahkan kota baru ke daftar kota _#Mencetak elemen dari daftar kota, dipisahkan dengan koma dan spasi
#Mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal _Contoh di atas menunjukkan kepada kita bahwa kita dapat mengubah keadaan internal 'kota' objek dengan menambahkan satu kota lagi 'Chennai' ke dalamnya, namun alamat memori objek tidak berubah. Ini menegaskan bahwa kami tidak membuat objek baru, melainkan objek yang sama telah diubah atau dimutasi. Karenanya, kita dapat mengatakan bahwa objek yang merupakan jenis daftar dengan nama variabel referensi 'kota' adalah OBJEK YANG DAPAT DIUBAH Sekarang mari kita bahas istilah IMMUTABLE. Mempertimbangkan bahwa kami memahami apa kepanjangan dari yang dapat diubah, jelas bahwa definisi dari yang tidak dapat diubah akan menyertakan 'TIDAK' di dalamnya. Berikut adalah definisi paling sederhana dari kekekalan– Sebuah objek yang keadaan internalnya TIDAK dapat diubah adalah KEKENALAN Sekali lagi, jika Anda mencoba dan berkonsentrasi pada pesan kesalahan yang berbeda, Anda temui, dilemparkan oleh masing-masing IDE; . Misalnya, pertimbangkan kode di bawah ini & pesan kesalahan yang terkait dengannya, saat mencoba mengubah nilai Tuple pada indeks 0. #Membuat Tuple dengan nama variabel 'foo'
#Mengubah nilai indeks[0] dari 1 menjadi 3 _Objek Abadi dengan PythonSekali lagi, kode sederhana akan menjadi cara terbaik untuk menggambarkan arti dari kekekalan. Oleh karena itu, mari kita bahas kode di bawah ini langkah demi langkah #Membuat Tuple yang berisi nama hari kerja bahasa Inggris _# Mencetak elemen tuple hari kerja
#Mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal 0#tuple tidak dapat diubah, jadi Anda tidak dapat menambahkan elemen baru, oleh karena itu, gunakan penggabungan tupel dengan operator # + untuk menambahkan hari imajiner baru di tuple 'hari kerja' 1#Mencetak elemen tuple hari kerja 2#Mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal _3Contoh di atas menunjukkan bahwa kami dapat menggunakan nama variabel yang sama yang mereferensikan objek yang merupakan jenis tupel dengan tujuh elemen di dalamnya. Namun, ID atau lokasi memori tuple lama & baru tidak sama. Kami tidak dapat mengubah status internal objek 'hari kerja'. Manajer program Python membuat objek baru di alamat memori dan nama variabel 'hari kerja' mulai mereferensikan objek baru dengan delapan elemen di dalamnya. Oleh karena itu, kita dapat mengatakan bahwa objek yang merupakan jenis tuple dengan nama variabel referensi 'hari kerja' adalah OBJEK TETAP Baca juga. Memahami Exploratory Data Analysis (EDA) dengan Python Di mana Anda bisa menggunakan objek yang bisa berubah dan tidak berubah Objek yang dapat diubah dapat digunakan di mana Anda ingin mengizinkan pembaruan apa pun. Misalnya, Anda memiliki daftar nama karyawan di organisasi Anda, dan perlu diperbarui setiap kali ada anggota baru yang direkrut. Anda dapat membuat daftar yang dapat berubah, dan dapat diperbarui dengan mudah Kekekalan menawarkan banyak aplikasi berguna untuk berbagai tugas sensitif yang kami lakukan di lingkungan yang berpusat pada jaringan tempat kami mengizinkan pemrosesan paralel. Dengan membuat objek yang tidak dapat diubah, Anda menyegel nilai dan memastikan bahwa tidak ada utas yang dapat meminta penimpaan/pembaruan ke data Anda. Ini juga berguna dalam situasi di mana Anda ingin menulis kode yang tidak dapat dimodifikasi. Misalnya, kode debug yang mencoba menemukan nilai objek yang tidak dapat diubah Hati-hati. Sifat Kekekalan yang tidak transitif OKE. Sekarang kita mengerti apa itu objek yang bisa berubah & tidak berubah di Python. Mari kita lanjutkan dan diskusikan kombinasi keduanya dan jelajahi kemungkinannya. Mari kita bahas, bagaimana perilakunya jika Anda memiliki objek yang tidak dapat diubah yang berisi objek yang dapat diubah? #membuat Tuple (objek tidak berubah) yang berisi 2 daftar (dapat diubah) sebagai elemennya #Elemen (daftar) berisi nama, umur & jenis kelamin _4#mencetak tuple 5#mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal 6#Mengubah usia untuk elemen ke-1. Memilih elemen pertama tuple dengan menggunakan pengindeksan [0] lalu elemen ke-2 dari daftar dengan menggunakan pengindeksan [1] dan menetapkan nilai baru untuk usia sebagai 4 7#mencetak tuple yang diperbarui _8#mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal _9Pada kode di atas, Anda dapat melihat bahwa objek 'orang' tidak dapat diubah karena merupakan jenis tupel. Namun, ia memiliki dua daftar sebagai elemennya, dan kami dapat mengubah status daftar (daftar dapat diubah). Jadi, di sini kita tidak mengubah referensi objek di dalam Tuple, tetapi objek yang direferensikan dimutasi Baca juga. Deteksi Objek Real-Time Menggunakan TensorFlow Dengan cara yang sama, mari jelajahi bagaimana perilakunya jika Anda memiliki objek yang dapat diubah yang berisi objek yang tidak dapat diubah? #membuat daftar (objek yang dapat diubah) yang berisi tupel (tidak dapat diubah) sebagai elemennya 0#mencetak daftar 1#mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal 2#mengubah referensi objek pada indeks 0 _3#mencetak daftar _4#mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal 5Sebagai seorang individu, itu sepenuhnya tergantung pada Anda dan kebutuhan Anda untuk struktur data seperti apa yang ingin Anda buat dengan kombinasi objek yang dapat diubah & tidak dapat diubah. Saya harap informasi ini akan membantu Anda saat memutuskan jenis objek yang ingin Anda pilih untuk selanjutnya Sebelum saya mengakhiri pembahasan kita tentang IMMUTABILITY, izinkan saya untuk menggunakan kata 'CAVITE' ketika kita membahas String dan Integer. Ada pengecualian, dan Anda mungkin melihat beberapa hasil yang mengejutkan saat memeriksa kebenaran untuk kekekalan. Contohnya x = 10 #mencetak nilai 'x' 6#Mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal _7#membuat objek bertipe integer dengan nilai 10 dan nama variabel referensi 'y' 8#mencetak nilai 'y' _9#Mencetak lokasi objek yang dibuat di alamat memori dalam format heksadesimal _0Sesuai dengan pembahasan dan pemahaman kita, sejauh ini, alamat memori untuk x & y seharusnya berbeda, karena 10 adalah instance dari kelas Integer yang tidak dapat diubah. Namun, seperti yang ditunjukkan pada kode di atas, ia memiliki alamat memori yang sama. Ini bukan sesuatu yang kami harapkan. Tampaknya apa yang telah kita pahami dan diskusikan, memiliki pengecualian juga Pemeriksaan cepat – Struktur Data Python Kekekalan TupleTuple tidak dapat diubah dan karenanya tidak dapat memiliki perubahan apa pun di dalamnya setelah dibuat dengan Python. Ini karena mereka mendukung operasi urutan yang sama dengan string. Kita semua tahu bahwa string tidak dapat diubah. Operator indeks akan memilih elemen dari tuple seperti pada string. Oleh karena itu, mereka tidak berubah Pengecualian dalam kekekalanSeperti semua, ada juga pengecualian dalam kekekalan di python. Tidak semua objek yang tidak dapat diubah benar-benar dapat berubah. Ini akan menimbulkan banyak keraguan di benak Anda. Mari kita ambil contoh untuk memahami hal ini Pertimbangkan tuple 'tup' Sekarang, jika kita mempertimbangkan tuple tup = ('GreatLearning',[4,3,1,2]) ; Kami melihat bahwa tuple memiliki elemen tipe data yang berbeda. Elemen pertama di sini adalah string yang seperti yang kita semua tahu sifatnya tidak dapat diubah. Elemen kedua adalah daftar yang kita semua tahu bisa berubah. Sekarang, kita semua tahu bahwa tuple itu sendiri adalah tipe data yang tidak dapat diubah. Itu tidak dapat mengubah isinya. Tapi, daftar di dalamnya bisa berubah isinya. Jadi, nilai objek yang tidak dapat diubah tidak dapat diubah tetapi objek penyusunnya bisa. mengubah nilainya FAQ1. Perbedaan antara bisa berubah vs tidak berubah dengan Python?ObjectImmutable ObjectState dari objek dapat dimodifikasi setelah dibuat. Status objek tidak dapat diubah setelah dibuat. Mereka tidak aman. Mereka adalah kelas thread safeMutable yang belum final. Penting untuk membuat kelas final sebelum membuat objek yang tidak dapat diubah2. Apa tipe data yang bisa berubah dan tidak berubah di Python?
daftar, kamus, set, kelas yang ditentukan pengguna
int, float, desimal, bool, string, tuple, range 3. Apakah daftar bisa berubah dengan Python?Daftar dalam Python adalah tipe data yang dapat berubah karena elemen daftar dapat dimodifikasi, elemen individual dapat diganti, dan urutan elemen dapat diubah bahkan setelah daftar dibuat 4. Mengapa tuple disebut tipe yang tidak dapat diubah?Struktur data tupel dan daftar sangat mirip, tetapi satu perbedaan besar antara tipe data adalah bahwa daftar dapat berubah, sedangkan tupel tidak dapat diubah. Alasan ketidakberubahan tuple adalah setelah elemen ditambahkan ke tuple dan tuple telah dibuat; Seorang programmer akan selalu lebih suka membuat kode yang dapat digunakan kembali daripada membuat seluruh objek data lagi. Tetap saja, meskipun tupel tidak dapat diubah, seperti daftar, tuple dapat berisi objek Python apa pun, termasuk objek yang dapat diubah 5. Apakah set bisa berubah dengan Python?Himpunan adalah kumpulan tipe data yang tidak terurut yang dapat digunakan untuk melakukan operasi matematika (seperti penyatuan, persimpangan, perbedaan, dll. ). Setiap elemen dalam suatu himpunan adalah unik dan tidak dapat diubah, mis. e. tidak boleh ada nilai duplikat, dan nilai tidak dapat diubah. Namun, kami dapat menambah atau menghapus item dari set karena set itu sendiri dapat berubah 6. Apakah string bisa berubah dengan Python?String tidak dapat diubah dengan Python. String adalah tipe data yang tidak dapat diubah yang artinya nilainya tidak dapat diperbarui Mengapa string tidak dapat diubah dalam Python dengan contoh?Dengan Python, string dibuat tidak dapat diubah sehingga pemrogram tidak dapat mengubah isi objek (bahkan karena kesalahan). Ini menghindari bug yang tidak perlu. Beberapa objek abadi lainnya adalah integer, float, tuple, dan bool. Lebih lanjut tentang objek yang dapat diubah dan tidak dapat diubah dengan Python.
Apa artinya string tidak dapat diubah dengan Python?String tidak dapat diubah dengan Python. String adalah tipe data yang tidak dapat diubah yang artinya nilainya tidak dapat diperbarui .
Mengapa string tidak dapat diubah?String tidak dapat diubah di Java karena keamanan, sinkronisasi dan konkurensi, caching, dan pemuatan kelas . Alasan membuat string final adalah untuk menghancurkan kekekalan dan tidak membiarkan orang lain memperpanjangnya. Objek String di-cache di kumpulan String, dan itu membuat String tidak dapat diubah.
Jenis Python mana yang tidak dapat diubah jelaskan dengan contoh?Daftar, Set, dan Kamus di Python adalah contoh beberapa tipe data yang bisa diubah di Python. Tipe data yang tidak dapat diubah adalah yang nilainya tidak dapat diubah setelah dibuat. Contoh tipe data yang tidak dapat diubah adalah int, str, bool, float, tuple , dll. |