Maison >développement back-end >Tutoriel Python >Pourquoi un nombre impair de barres obliques inverses est-il interdit dans les chaînes brutes de Python ?

Pourquoi un nombre impair de barres obliques inverses est-il interdit dans les chaînes brutes de Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-10 17:08:11798parcourir

Why Are Odd Numbers of Backslashes Forbidden in Python's Raw Strings?

Pourquoi la terminaison par une seule barre oblique inverse est interdite dans les chaînes brutes de Python

Bien qu'il puisse sembler intuitif que les chaînes brutes en Python devraient autoriser un nombre quelconque de les barres obliques inverses comme caractères normaux, il y a une raison spécifique pour la restriction sur les nombres impairs barres obliques inverses.

La nature cachée des barres obliques inverses dans les chaînes brutes

La clé pour comprendre cette restriction réside dans la reconnaissance du fait que les barres obliques inverses ont un double objectif dans les chaînes brutes. Contrairement à une idée reçue, ce ne sont pas de simples personnages ordinaires. Comme l'indique la documentation Python :

"Lorsqu'un préfixe 'r' ou 'R' est présent, un caractère suivant une barre oblique inverse est inclus dans la chaîne sans changement, et toutes les barres obliques inverses sont laissées dans la chaîne."

Cela signifie que chaque caractère suivant une barre oblique inverse devient une partie intégrante de la chaîne brute. Par exemple :

  • r'abcd' contient 'a', 'b', 'c', '', 'd'
  • r'abc'd' contient 'a ', 'b', 'c', '', '"', 'd'
  • r'abc'' contient 'a', 'b', 'c', '', '''

Le dilemme des barres obliques inverses impaires

Avec cette compréhension, considérons le brut suivant chaîne :

  • r'abc'

Ceci contient 'a', 'b', 'c', '', '''. Lorsque l'analyseur rencontre une barre oblique inverse dans une chaîne brute, il suppose qu'il y a deux caractères (la barre oblique inverse et un caractère après). la barre oblique inverse est le dernier caractère, ne laissant aucun guillemet final.

Par conséquent, Python n'autorise pas les barres obliques inverses impaires dans les chaînes brutes car elles consommeraient le caractère de fermeture de la chaîne, ce qui entraînerait dans une erreur de syntaxe.

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