Quand et pourquoi bool est-il une sous-classe de int en Python ?

Susan Sarandon
Libérer: 2024-10-22 06:20:31
original
913 Les gens l'ont consulté

When and Why is bool a Subclass of int in Python?

Pourquoi bool est-il techniquement une sous-classe de int en Python ?

Lorsque vous utilisez la bibliothèque memcached de Python pour stocker une valeur booléenne, il est initialement surprenant de observez son retour comme un entier. Une enquête plus approfondie révèle que Python interprète isinstance(val, int) comme True pour une valeur bool, ce qui implique que bool est en quelque sorte une sous-classe de int.

Cette relation particulière entre bool et int a une explication historique. Avant l'introduction du type bool dans les versions 2.2 ou 2.3 de Python, la représentation standard des valeurs booléennes utilisait les entiers 0 (False) et 1 (True).

Pour garantir la compatibilité avec le code existant qui reposait sur ce type convention, Python a implémenté le type bool d'une manière qui reflétait le comportement de 0 et 1. Cela signifiait non seulement préserver leurs valeurs de vérité, mais également étendre leurs fonctionnalités pour prendre en charge toutes les opérations intégrales.

En conséquence, le bool de Python tapez essentiellement "mascarades" sous forme d'entier. Bien qu'il soit possible d'utiliser des valeurs booléennes dans des contextes numériques, cela n'est pas recommandé. De même, tester l'égalité d'un bool et d'un entier pour la valeur de vérité peut conduire à un comportement inattendu.

Cette évolution historique explique pourquoi bool est une sous-classe de int en Python. Il sert d'artefact historique des exigences d'expansion et de compatibilité du langage Python.

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal