Quelle est la différence entre raw_input()
et input()
dans Python 3 ?
"Quelle est la différence entre raw_input
... ?" - "La différence est qu'il n'y a pas raw_input
." ...Une différence assez drastique, je dirais !
Quelle est la différence entre raw_input()
et input()
dans Python 3 ?
La différence est que raw_input()
n'existe pas dans Python 3.x, alors que input()
fait. En fait, l'ancien raw_input()
a été renommé en input()
et l'ancien input()
a disparu, mais peut facilement être simulé en utilisant eval(input())
. (Rappelez-vous que eval()
est mauvais. Essayez d'utiliser des moyens plus sûrs pour analyser votre entrée si possible).
"Quelle est la différence entre raw_input
... ?" - "La différence est qu'il n'y a pas raw_input
." ...Une différence assez drastique, je dirais !
Dans Python 2, je suppose qu'ils ont supposé que les programmeurs voulaient effectivement "exécuter" comme une commande l'entrée de l'utilisateur, puisque initialement (je suppose) demander l'entrée de l'utilisateur pourrait être seulement pour cela. Mais lorsqu'ils ont réalisé que les programmeurs pouvaient également vouloir obtenir l'entrée "brute", ils ont conçu une autre fonction appelée "raw_input". Dans Python 3, ils ont remarqué que c'était stupide et ont simplement supprimé l'exécution du défaut d'entrée original, ce qui a donné une seule fonction simple.
En Python 2 , raw_input()
renvoie une chaîne de caractères, et input()
essaie d'exécuter l'entrée comme une expression Python.
Puisque l'obtention d'une chaîne de caractères est presque toujours ce que vous voulez, Python 3 le fait avec input()
. Comme le dit Sven, si vous voulez l'ancien comportement, eval(input())
travaux.
raw_input()
prend exactement ce que l'utilisateur a tapé et le renvoie sous forme de chaîne.
input()
prend d'abord le raw_input()
puis effectue un eval()
sur elle aussi.
La principale différence est que input()
s'attend à une déclaration python syntaxiquement correcte où raw_input()
ne le fait pas.
raw_input()
a été renommé en input()
alors maintenant input()
renvoie la chaîne exacte.input()
a été supprimé.Si vous voulez utiliser l'ancien input()
Si vous avez besoin d'évaluer une entrée utilisateur en tant qu'instruction python, vous devez le faire manuellement à l'aide de la commande eval(input())
.
Dans Python 3, raw_input()
n'existe pas, ce qui a déjà été mentionné par Sven.
Dans Python 2, la fonction input()
évalue votre entrée.
Exemple :
name = input("what is your name ?")
what is your name ?harsha
Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
name = input("what is your name ?")
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
Dans l'exemple ci-dessus, Python 2.x essaie d'évaluer harsha comme une variable plutôt que comme une chaîne de caractères. Pour éviter cela, nous pouvons utiliser des guillemets doubles autour de notre entrée comme "harsha" :
>>> name = input("what is your name?")
what is your name?"harsha"
>>> print(name)
harsha
raw_input()
La fonction raw_input()` n'évalue pas, elle va juste lire ce que vous avez entré.
Exemple :
name = raw_input("what is your name ?")
what is your name ?harsha
>>> name
'harsha'
Exemple :
name = eval(raw_input("what is your name?"))
what is your name?harsha
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
name = eval(raw_input("what is your name?"))
File "<string>", line 1, in <module>
NameError: name 'harsha' is not defined
Dans l'exemple ci-dessus, j'essayais simplement d'évaluer l'entrée de l'utilisateur avec la fonction eval
fonction.
J'aimerais ajouter un peu plus de détails à l'explication fournie par tout le monde pour la utilisateurs de python 2 . raw_input()
qui, comme vous le savez maintenant, évalue toutes les données que l'utilisateur saisit sous forme de chaîne. Cela signifie que python n'essaie même pas de comprendre à nouveau les données saisies. Tout ce qu'il considère, c'est que les données saisies sont des chaînes de caractères, qu'il s'agisse ou non d'une chaîne de caractères réelle, d'un nombre entier ou de quoi que ce soit d'autre.
Alors que input()
d'autre part, essaie de comprendre les données saisies par l'utilisateur. Ainsi, l'entrée comme helloworld
afficherait même l'erreur comme ' helloworld is undefined
'.
En conclusion, pour python 2 pour entrer une chaîne de caractères, vous devez aussi l'entrer comme ''. helloworld
' qui est la structure commune utilisée en python pour utiliser les chaînes de caractères.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
3 votes
Comment rendre compatible un programme qui prend en entrée à la fois Python 2 et Python 3 ?
2 votes
Pour ce faire, vous essayez de définir
input
àraw_input
et ignore les erreurs de nom.3 votes
Recherchez la bibliothèque 'six' pour la compatibilité avec python 2 et 3.