Maison > développement back-end > Tutoriel Python > Pourquoi ma fonction d'entrée Python renvoie-t-elle une « NameError : le nom '...' n'est pas défini » ?

Pourquoi ma fonction d'entrée Python renvoie-t-elle une « NameError : le nom '...' n'est pas défini » ?

Patricia Arquette
Libérer: 2025-01-01 05:35:10
original
247 Les gens l'ont consulté

Why Does My Python Input Function Throw a

Résolution de l'erreur de fonction d'entrée : 'NameError : nom '..."' non définie

La fonction d'entrée en Python, en particulier dans les versions avant 3.x, pose un défi particulier lors de la gestion des entrées utilisateur. L'erreur que vous rencontrez, « NameError : le nom '...'' n'est pas défini », provient de la nature de l'évaluation de l'entrée.

Dans Python 2.7, l'entrée accepte non seulement l'entrée de l'utilisateur, mais l'évalue également comme un Expression Python. Cela signifie que si vous entrez un nom de variable, tel que "mec", l'entrée tentera de l'interpréter comme une variable liée dans votre programme. Si aucune variable de ce type n'existe, l'erreur se produira.

Éviter les pièges de l'entrée de Python 2.7

Pour éviter ce risque de sécurité potentiel, envisagez de passer à raw_input, le prédécesseur de l'entrée dans Python 3.x. raw_input lit simplement les entrées de l'utilisateur sans les exécuter.

Dans Python 3.x, input remplace effectivement raw_input, offrant la même fonctionnalité. Cependant, la documentation Python 3.x prévient que si vous avez besoin de l'ancien comportement de saisie, vous pouvez utiliser eval(input()).

Comprendre la distinction

Pour Pour illustrer la différence entre input et raw_input, considérons le code Python 2.7 suivant :

dude = "thefourtheye"
input_variable = input("Enter your name: ")
Copier après la connexion

Lorsque vous entrez "dude" en entrée, input_variable se verra attribuer la valeur "thefourtheye" car mec est une variable définie dans le programme.

Comparez cela avec le code suivant :

input_variable = raw_input("Enter your name: ")
Copier après la connexion

Dans ce cas , input_variable se verra attribuer la chaîne "dude" elle-même, sans aucune évaluation.

Sécurité Considérations

La capacité d'évaluation des entrées dans Python 2.7 soulève des problèmes de sécurité. Par exemple, si le module os a été importé et que l'utilisateur saisit "os.remove('/etc/hosts')", il sera exécuté comme un appel de fonction. Pour atténuer ces risques, envisagez toujours d'utiliser raw_input pour vous assurer que les entrées de l'utilisateur ne sont pas évaluées par inadvertance comme du code.

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