BASESTRING |
Chaîne de base |
---|---|
Python Version 1 à 2 |
Syntaxe
basestring() |
Description
Cette fonction permet de créer un objet de chaîne de caractères.
Algorithme
MODULE BASESTRING Classe de base pour les classes str et unicode MODULE isinstance(objet, basestring) SI objet est une instance de str ou unicode ALORS RETOURNE True SINON RETOURNE False FIN SI |
Remarques
- ATTENTION ! Cette fonction a été retiré du langage de programmation Python à partir de la version 3.0 de Python.
- basestring n'est pas une fonction, contrairement à ce que la fiche laisse entendre, mais une classe abstraite intégrée dans Python 2. Elle ne peut pas être instanciée directement avec basestring(), d'où l'erreur si on tente de l'utiliser comme une fonction. Elle servait uniquement à effectuer des tests de type.
- basestring est la classe mère de str et unicode dans Python 2. Cela permettait d'écrire du code générique fonctionnant avec les deux types de chaînes de caractères, ce qui était très utile dans des contextes où les données pouvaient être encodées en ASCII ou en Unicode.
- L'utilisation typique de basestring était avec isinstance() pour vérifier si une variable était une chaîne, quelle que soit sa nature (str ou unicode) :
- isinstance(x, basestring)
- Dans Python 3, basestring a été supprimé, car il n'y a plus qu'un seul type de chaîne de caractères (str). Tous les objets texte sont Unicode par défaut. Ainsi, isinstance(x, str) suffit désormais. Le besoin de distinguer ou d'englober deux types de chaînes n'existe plus.
- Essayer d'utiliser basestring dans Python 3 provoquera une erreur NameError, car le nom n'est plus reconnu. C'est une des nombreuses ruptures de compatibilité entre Python 2 et Python 3. Cela souligne l'importance de bien connaître la version du langage utilisée.
- basestring n'était jamais utilisé pour créer des chaînes de caractères. Pour cela, on utilisait plutôt str() ou unicode() selon le cas.
- Pour assurer la compatibilité entre Python 2 et 3, certains projets utilisaient des techniques comme :
- try:
- basestring
- except NameError:
- basestring = str
- La disparition de basestring fait partie d'un effort de simplification de la gestion du texte en Python 3. Même si basestring n'a plus d'utilité aujourd'hui, le comprendre est essentiel pour lire ou maintenir du code écrit pour Python 2, encore présent dans certains vieux projets.
Cela permettait d'éviter d'écrire deux conditions séparées, et rendait le code plus lisible.
Cela permettait d'utiliser du code commun dans les deux versions du langage, particulièrement dans des bibliothèques multi-version.
Dernière mise à jour : Mercredi, le 14 septembre 2016