Maison >développement back-end >Tutoriel Python >Python 2.7 vs 3.x : pourquoi `input()` provoque-t-il une `NameError : le nom '...' n'est pas défini` ?
Erreur Input() : Comprendre l'erreur NameError : le nom '...' n'est pas défini
Dans Python 2.7 et 3.x, la fonction input() est utilisée pour accepter les entrées de l'utilisateur. Cependant, il existe une différence subtile dans le comportement de input() dans ces versions.
Python 2.7
Dans Python 2.7, la fonction input() évalue la chaîne saisi par l'utilisateur sous forme d'expression Python. Cela signifie que si vous entrez le nom d'une variable ou d'une fonction existante, la fonction input() renverra la valeur de cette variable ou exécutera cette fonction.
Par exemple, si vous avez une variable nommée 'mec' avec la valeur « thefourtheye », taper « mec » dans la fonction input() renverra « thefourtheye ». Cependant, si vous saisissez un nom qui n'est pas défini dans le contexte actuel, vous obtiendrez une NameError.
Python 3.x
Dans Python 3.x, la fonction input() est équivalente à la fonction raw_input() de Python 2.7. Il lit simplement une ligne à partir de l'entrée standard et la renvoie sous forme de chaîne sans l'évaluer.
Cela signifie que vous ne pouvez plus saisir de noms de variables ou de fonctions dans la fonction input() et vous attendre à ce qu'elle renvoie leurs valeurs. Au lieu de cela, input() renverra toujours une chaîne, que vous pourrez ensuite convertir dans le type approprié (par exemple, int ou float) si nécessaire.
Considérations de sécurité
Le fait que input() évalue les entrées de l'utilisateur dans Python 2.7 peut présenter des risques de sécurité. Si l'utilisateur saisit du code malveillant, celui-ci pourrait être exécuté par l'interpréteur Python. Par conséquent, il est important de faire attention à la façon dont vous utilisez input() dans votre code.
Dans Python 3.x, le risque de sécurité associé à input() est considérablement réduit car les entrées de l'utilisateur ne sont pas évaluées. Cependant, il est toujours bon de nettoyer les entrées de l'utilisateur avant de les utiliser dans votre 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!