9
votes

Est-il possible d'échapper à un mot réservé à Python?

Ce n'est peut-être pas une bonne idée de nommer une variable après un mot réservé, mais je suis curieux:

existe-t-il une syntaxe d'évacuation dans Python pour vous permettre d'utiliser un mot réservé comme nom d'une variable?

Par exemple, en C # Ceci peut être fait en préfixant le mot réservé avec @


0 commentaires

5 Réponses :


5
votes

non , ce n'est pas possible.

Section 2.3.1 de la référence de langue Python dit que les mots-clés '< em> ne peut pas être utilisé comme identifiant ordinaire 'et ne spécifie pas une syntaxe d'évacuation.

Ceci est probablement une bonne chose, pour la lisibilité du code!


5 commentaires

Bien que si vous ajoutez un caractère à un mot-clé de chaque côté tant que le résultat est un identificateur valide, il est maintenant distinct du mot clé. i.e. in est un mot-clé mais in2 et xin ne sont pas.


Cela dit que nous pouvons mais ne devrait pas. Para3 3e dernière ligne développeurs.google.com/edu/python/strings


Comment ajoutez-vous un attribut XML avec la "classe" identifiée alors?


@awebDeveloper: Si vous voulez dire la référence à "LEN", ce n'est pas un mot clé, mais une fonction prédéfinie, elle peut donc être redéfinie à volonté.


@Stephen pour "classe": Stackoverflow.com / Questions / 26764634 / ... (Publié par Manuel Alberto Snchez Hernndez)



2
votes

Si cela ne vous dérange pas de préfixer, vous pouvez "préfixer" avec un soulignement. Bien sûr, cela fera partie du nom de la variable, mais ce sera look comme un mot réservé préfixé. Autre que cela, ce n'est pas possible.


1 commentaires

Vous ne voulez généralement pas préfixer, car un soulignement préfixé se réfère généralement aux attributs «non publics». Postfixing est probablement mieux.



18
votes

Il n'est pas possible, mais il s'agit d'une sorte de tradition en python d'ajouter un _ pour obtenir un nouvel identifiant: xxx


4 commentaires

Cela dit que nous pouvons. Para3 3e dernière ligne développeurs.google.com/edu/python/strings


Je ne trouve rien là-bas sur l'échappement de mots réservés, seulement un peu sur la manière dont vous ne devriez pas utiliser len en tant que nom de variable (et len n'est pas un mot-clé).


Python a permis à mon de créer une liste nommée "Liste", elle ne devrait pas, aucune idée de la raison pour laquelle Python m'a permis d'utiliser des mots réservés aux utilisateurs.


@etL_Devs Liste n'est pas un mot réservé, c'est simplement le nom d'une intégrée. Ombre Ceux-ci est généralement une mauvaise idée, mais c'est parfaitement légal.



1
votes

J'ai reçu une erreur lors de l'utilisation des éléments suivants:

for r in db.call ('ReadCashflows',
                  number = number,
                  FROM = date_from,
                  TO = date_to):


0 commentaires

1
votes
db.call( ..., **{ 'from' : date_from }, **{ 'to' : date_to })
Python doesn't do those check when unpacking.

0 commentaires