Maison > développement back-end > Tutoriel Python > Pourquoi `input()` provoque-t-il une `NameError` dans Python 2.7 et comment puis-je y remédier ?

Pourquoi `input()` provoque-t-il une `NameError` dans Python 2.7 et comment puis-je y remédier ?

Mary-Kate Olsen
Libérer: 2024-12-30 22:38:18
original
514 Les gens l'ont consulté

Why Does `input()` Cause a `NameError` in Python 2.7, and How Can I Fix It?

Erreur input() : la résolution de l'erreur NameError « Nom » n'est pas défini

En essayant d'exécuter un script simple, les utilisateurs peuvent rencontrer l'erreur suivante :

NameError: name '...' is not defined
Copier après la connexion

Cette erreur survient lors de l'utilisation de Python 2.7 avec la fonction input(), qui évalue les entrées de l'utilisateur en tant qu'expression Python. Lorsqu'on attend une entrée de chaîne, cette évaluation peut prêter à confusion.

Spécificité de Python 2.7

Python 2.7 offre deux options pour la saisie de l'utilisateur :

  • entrée  : évalue l'entrée en tant que Python expression.
  • raw_input : lit l'entrée sous forme de chaîne sans évaluation.

Dans Python 2.7, ce qui suit est vrai :

input = eval(raw_input)
Copier après la connexion

Par conséquent, lors de l'utilisation de input("Entrez votre nom : "), la chaîne d'entrée, par exemple "mec", est évaluée comme une variable nom. Si aucune variable nommée "dude" n'existe dans le script, l'erreur est générée.

Problèmes de sécurité avec input() de Python 2.7

La fonctionnalité d'évaluation de input() pose des implications de sécurité. Par exemple, si le module os est importé et que l'utilisateur saisit "os.remove("/etc/hosts")", cette expression Python est exécutée et pourrait potentiellement endommager le système.

Python 3.x et Beyond

Dans Python 3.x, il n'y a qu'une seule fonction input(), qui imite essentiellement raw_input() de Python 2.7. Cela élimine l'aspect évaluation et simplifie le processus de saisie.

Solution et recommandations

Pour résoudre l'erreur NameError dans Python 2.7 lors de la lecture des entrées de chaîne, il est conseillé d'utiliser la fonction raw_input au lieu de input. Cela garantit que l'entrée est traitée comme une chaîne et non évaluée comme une expression Python. Si un traitement ou une conversion supplémentaire est nécessaire, des fonctions appropriées peuvent être utilisées pour gérer l'entrée de chaîne.

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.cn
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