Maison > développement back-end > Tutoriel Python > Pourquoi la fonction `input()` de Python provoque-t-elle « NameError » et comment puis-je l'éviter ?

Pourquoi la fonction `input()` de Python provoque-t-elle « NameError » et comment puis-je l'éviter ?

Mary-Kate Olsen
Libérer: 2024-12-31 22:56:11
original
686 Les gens l'ont consulté

Why Does Python's `input()` Function Cause

Erreur Input() : gestion des erreurs de nom en Python

Lorsque vous essayez d'exécuter un script qui utilise la fonction d'entrée, vous pouvez rencontrer l'erreur "NameError: name ' ...' n'est pas défini." Cela se produit lorsque la tentative de la fonction d'entrée d'évaluer l'entrée de l'utilisateur en tant qu'expression Python échoue en raison de l'absence d'un nom ou d'une variable valide.

Comprendre l'entrée() dans Python 2.7

Dans Python 2.7 , la fonction d'entrée exécute un comportement unique. Il interprète l'entrée de l'utilisateur comme une expression Python. Si le script attend une chaîne, l'entrée ne doit pas être placée entre guillemets. Cependant, lorsqu'une chaîne est attendue mais est entourée de guillemets, l'erreur se produit en raison de la présence de guillemets supplémentaires.

Par exemple :

input_variable = input("Enter your name: ")  # Expecting a string without quotes
print("Your name is " + input_variable)  # Error: NameError
Copier après la connexion

Pour rectifier cela dans Python 2.7, utilisez plutôt la fonction raw_input. Cette fonction lit simplement l'entrée de l'utilisateur sans l'interpréter comme une expression Python.

input_variable = raw_input("Enter your name: ")  # Expecting a string with quotes
print("Your name is " + input_variable)  # No error
Copier après la connexion

Input() dans Python 3.x

Dans Python 3.x, la fonction raw_input a été renommée à saisir. Par conséquent, il se comporte de la même manière que raw_input dans Python 2.7 : il lit l'entrée de l'utilisateur sous forme de chaîne sans interprétation.

Implications sur la sécurité de Input() dans Python 2.7

Depuis l'entrée en Python 2.7 évalue les entrées de l'utilisateur, cela pose des problèmes de sécurité. Si un utilisateur malveillant saisit une commande qui n’est pas correctement nettoyée ou validée, il pourrait potentiellement exécuter du code malveillant. Par exemple, si un script a importé le module os et qu'un utilisateur saisit ce qui suit en entrée :

os.remove("/etc/hosts")
Copier après la connexion

Cela pourrait entraîner la suppression du fichier /etc/hosts, soulignant l'importance d'utiliser raw_input à la place pour lire les entrées utilisateur sensibles.

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