Rumah >pembangunan bahagian belakang >Tutorial Python >Mengapakah Sifar Utama dalam Python 2.x Kadangkala Menghasilkan Nilai Integer Tidak Dijangka?

Mengapakah Sifar Utama dalam Python 2.x Kadangkala Menghasilkan Nilai Integer Tidak Dijangka?

Patricia Arquette
Patricia Arquetteasal
2024-11-19 18:34:02691semak imbas

Why Do Leading Zeros in Python 2.x Sometimes Produce Unexpected Integer Values?

Pemalar Octal Curious Python

Apabila menggunakan integer kecil dengan sifar pendahuluan dalam versi Python 2.x sebelum 2.6, hasil yang tidak dijangka mungkin timbul . Integer ini ditafsirkan sebagai nombor perlapanan, sistem asas nombor yang berbeza daripada sistem perpuluhan standard.

Notasi Oktal Dijelaskan

Dalam tatatanda oktal, asasnya ialah 8 dan bukannya 10. Setiap digit mewakili kuasa 8. Contohnya, dalam nombor 011:

  • 1 mewakili 1 * 8¹ (8)
  • 1 mewakili 1 * 8⁰ (1)

Oleh itu, 011 bersamaan dengan 9 inci perpuluhan (8 1 = 9). Begitu juga:

  • 0100 = 1 8² 0 8¹ 0 * 8⁰ = 64
  • 027 = 2 8¹ 7

Python 3 dan Pemalar Oktal

Dalam Python 3, pemalar perlapanan memerlukan awalan eksplisit, 0o, untuk membezakannya daripada integer perpuluhan. Oleh itu, 011 daripada Python 2.x akan ditulis sebagai 0o11 dalam Python 3.

Pengesahan Jenis

Walaupun kelakuannya yang luar biasa, pemalar oktal ini kekal integer dalam Python:

>>> type(027)
<class 'int'>

Kepraktikalan Octal Pemalar

Walaupun tatatanda perlapanan adalah perkara biasa pada hari-hari awal pengkomputeran, ia jarang digunakan hari ini. Notasi perpuluhan atau heksadesimal biasanya lebih disukai untuk kebolehbacaan dan keserasian. Adalah penting untuk mengetahui pemalar perlapanan dalam Python 2.x, walau bagaimanapun, untuk memahami potensi kesannya pada tingkah laku kod.

Atas ialah kandungan terperinci Mengapakah Sifar Utama dalam Python 2.x Kadangkala Menghasilkan Nilai Integer Tidak Dijangka?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn