Maison >développement back-end >Tutoriel Python >Pourquoi Python 2.x interprète-t-il les nombres avec des zéros non significatifs comme octaux ?

Pourquoi Python 2.x interprète-t-il les nombres avec des zéros non significatifs comme octaux ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-26 12:08:09578parcourir

Why Does Python 2.x Interpret Numbers with Leading Zeros as Octal?

Décoder les mystérieux nombres « 0 » en tête en Python

Lorsque vous tapez de petits entiers avec un zéro non significatif dans Python 2.7.3, ils donnent des résultats inattendus, tels que :

>>> 011
9
>>> 0100
64
>>> 027
23

Cette bizarrerie découle de la façon dont Python interprète les nombres préfixés avec "0". Dans Python 2.x, ces nombres sont considérés comme des entiers octaux (base 8).

Dévoilement des nombres octaux

Dans le système de nombres octaux, chaque chiffre représente des puissances de 8. Par exemple :

  • 011 représente 1 x 8¹ 1 x 8⁰ = 9
  • 0100 représente 1 x 8² 0 x 8¹ 0 x 8⁰ = 64
  • 027 représente 2 x 8¹ 7 x 8⁰ = 16 7 = 23

Le moderne de Python 3 Approche

Contrairement à Python 2.7.3, Python 3.0 ne reconnaît pas les nombres commençant par « 0 » comme des entiers octaux et génère à la place une erreur. Pour représenter les nombres octaux en Python 3, il faut utiliser le préfixe "0o", par exemple :

>>> 0o11
9
>>> 0o100
64
>>> 0o27
23

Legacy Support in Python 2.x

Python 2. x versions >= 2.6 prennent en charge à la fois l'ancien format (en début de "0") et le nouveau format (en début de "0o") pour nombres octaux, offrant une compatibilité descendante.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn