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: ")
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: ")
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!