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