Mulai dari konten utama Python, Tali · 2 Nov 2020 Show Mengembalikan panjang string dalam byte
def byte_size(s): return len(s.encode('utf-8')) Lebih seperti ini
str = "01011101 01110101" cetak ("str. menghitung('0'). ", str. hitungan(sub)) # COUNT JUMLAH 1 dari 1 sampai 8 # INI AKAN MENGEMBALIKAN COUNT DARI 1 SAMPAI KURANG DARI 8 cetak ("str. hitung('str', 1, 8). ", str. hitung(sub,1,8)) Untuk menemukan panjang objek byte di Python, panggil fungsi bawaan len() dan berikan objek byte sebagai argumen. fungsi len() mengembalikan jumlah byte dalam objek Referensi – fungsi bawaan Python len() Pada contoh berikut, kita akan mengambil objek byte dan mencari panjangnya menggunakan fungsi len() Program Piton bytesObject = b'\x65\x66\x67\x00\x10\x00\x00\x00\x04\x00' length = len(bytesObject) print(f'Length of this bytes object is {length}.')Coba Daring Keluaran Length of this bytes object is 10. KesimpulanDalam Tutorial Python ini, kita belajar cara mencari panjang byte objek menggunakan fungsi len(), dengan program contoh Sejak Python 3, tipe Untuk mengurangi konsumsi memori dan meningkatkan performa, Python menggunakan tiga jenis representasi internal untuk string Unicode
Saat memprogram dengan Python, semua string berperilaku sama, dan sebagian besar waktu kami tidak melihat adanya perbedaan. Namun, perbedaannya bisa sangat luar biasa dan terkadang tidak terduga saat bekerja dengan teks dalam jumlah besar Untuk melihat perbedaan representasi internal, kita dapat menggunakan fungsi
Seperti yang Anda lihat, tergantung pada konten string, Python menggunakan pengkodean yang berbeda. Perhatikan bahwa setiap string dalam Python membutuhkan tambahan 49-80 byte memori, di mana ia menyimpan informasi tambahan, seperti hash, panjang, panjang dalam byte, jenis penyandian, dan bendera string. Itu sebabnya string kosong membutuhkan 49 byte memori Kami dapat mengambil penyandian langsung dari objek menggunakan _
Jika semua karakter dalam sebuah string dapat ditampung dalam rentang ASCII, maka karakter tersebut akan dikodekan menggunakan pengkodean 1-byte Latin-1. Pada dasarnya, Latin-1 mewakili 256 karakter Unicode pertama. Ini mendukung banyak bahasa Latin, seperti Inggris, Swedia, Italia, Norwegia, dan sebagainya. Namun, itu tidak dapat menyimpan bahasa non-Latin, seperti Cina, Jepang, Ibrani, Cyrillic. Itu karena titik kode mereka (indeks numerik) ditentukan di luar rentang 1-byte (0-255) _Sebagian besar bahasa alami populer dapat ditampung dalam pengkodean 2-byte (UCS-2). Pengkodean 4-byte (UCS-4) digunakan saat string berisi simbol khusus, emoji, atau bahasa langka. Ada hampir 300 blok (rentang) dalam standar Unicode. Anda dapat menemukan blok 4-byte setelah blok 0xFFFF Misalkan kita memiliki teks ASCII 10GB dan kita ingin memuatnya di memori. Jika Anda memasukkan satu emoji ke dalam teks kami, ukuran string akan bertambah dengan faktor 4. Ini adalah perbedaan besar yang mungkin Anda temui dalam praktik saat bekerja dengan masalah NLP Mengapa Python tidak menggunakan pengkodean UTF-8 secara internalPengkodean Unicode yang paling terkenal dan populer adalah UTF-8, tetapi Python tidak menggunakannya secara internal Ketika sebuah string disimpan dalam pengkodean UTF-8, setiap karakter dikodekan menggunakan 1-4 byte tergantung pada karakter yang diwakilinya. Ini adalah penyandian yang efisien untuk penyimpanan, tetapi memiliki satu kelemahan yang signifikan. Karena setiap karakter dapat bervariasi dalam panjang byte, tidak ada cara untuk mengakses karakter individu secara acak berdasarkan indeks tanpa memindai string. Jadi, untuk melakukan operasi sederhana seperti 0 dengan UTF-8 Python perlu memindai string hingga menemukan karakter yang diperlukan. Pengkodean panjang tetap tidak memiliki masalah seperti itu, untuk menemukan karakter dengan indeks Python hanya mengalikan nomor indeks dengan panjang satu karakter (1, 2 atau 4 byte)Pelatihan stringSaat bekerja dengan string kosong atau string ASCII dari satu karakter, Python menggunakan string interning. String yang diinternir bertindak sebagai lajang, yaitu, jika Anda memiliki dua string identik yang diinternir, hanya ada satu salinannya di memori _Seperti yang Anda lihat, kedua irisan string menunjuk ke alamat yang sama di memori. Itu mungkin karena string Python tidak dapat diubah Dalam Python, magang string tidak terbatas pada karakter atau string kosong. String yang dibuat selama kompilasi kode juga dapat diinternir jika panjangnya tidak melebihi 20 karakter Ini termasuk
Saat Anda menekan enter di Python REPL, pernyataan Anda dikompilasi ke bytecode. Itu sebabnya semua string pendek di REPL juga diinternir _Contoh ini tidak akan bekerja, karena string tersebut bukanlah konstanta
Teknik magang string menghemat puluhan ribu alokasi string duplikat. Secara internal, magang string dikelola oleh kamus global di mana string digunakan sebagai kunci. Untuk memeriksa apakah sudah ada string yang identik dalam memori, Python melakukan operasi keanggotaan kamus Objek unicode hampir 16.000 baris kode C, jadi ada banyak pengoptimalan kecil yang tidak disebutkan dalam artikel ini. Jika Anda ingin mempelajari lebih lanjut tentang Unicode dengan Python, saya akan merekomendasikan Anda untuk membaca PEP tentang string dan memeriksa kode objek unicode Posting populer dalam kategori Python07 Oktober 2017Pengumpulan sampah dengan Python. hal-hal yang perlu Anda ketahui28 September 2017Manajemen memori dengan Python09 Mei 2018Mengekstrak teks dari HTML dengan Python. pendekatan yang sangat cepat21 Januari 2018Memahami internal kelas Python03 April 2018Trik pengoptimalan dengan Python. list dan tuple19 September 2017Internal python. Implementasi bilangan bulat presisi sewenang-wenangpython , internal cpython, memori Membagikan Komentar
|