Quelle est la différence entre raw_input()
et input()
en Python 3?
python
python-3.x
input
pkumar
la source
la source
input
àraw_input
et ignorer les erreurs de nom.Réponses:
La différence est qu'il
raw_input()
n'existe pas dans Python 3.x, alorsinput()
qu'il existe . En fait, l'ancienraw_input()
a été renomméinput()
et l'ancien ainput()
disparu, mais peut facilement être simulé à l'aide deeval(input())
. (N'oubliez pas queeval()
c'est mauvais. Essayez d'utiliser des méthodes plus sûres pour analyser votre entrée si possible.)la source
raw_input
...?" - "La différence est qu'il n'y a pasraw_input
." ... Une différence assez radicale, je dirais!eval
(etexec
) devraient généralement être évités car ils peuvent constituer un risque pour la sécurité. Pour plus de détails, veuillez consulter Eval est vraiment dangereux par le vétéran de SO Ned Batchelder. Et bien sûr, ces conseils s'appliquent également à l'ancien Python 2input
.eval()
etexec()
, mais vous devez d'abord comprendre pourquoi vous ne devriez pas utilisereval()
avant de décider de l'utiliser.En Python 2 ,
raw_input()
renvoie une chaîne etinput()
tente d'exécuter l'entrée en tant qu'expression Python.Comme obtenir une chaîne était presque toujours ce que vous vouliez, Python 3 le fait avec
input()
. Comme le dit Sven, si jamais vous voulez l'ancien comportement, çaeval(input())
marche.la source
raw_input()
.Python 2:
raw_input()
prend exactement ce que l'utilisateur a tapé et le retransmet sous forme de chaîne.input()
prend d'abord leraw_input()
puis effectue également uneval()
dessus.La principale différence est
input()
qu'attend une instruction python syntaxiquement correcte oùraw_input()
non.Python 3:
raw_input()
a été renommé en renvoieinput()
maintenantinput()
la chaîne exacte.input()
été supprimé.Si vous souhaitez utiliser l'ancien
input()
, ce qui signifie que vous devez évaluer une entrée utilisateur en tant qu'instruction python, vous devez le faire manuellement à l'aide deeval(input())
.la source
En Python 3,
raw_input()
n'existe pas qui a déjà été mentionné par Sven.En Python 2, la
input()
fonction évalue votre entrée.Exemple:
Dans l'exemple ci-dessus, Python 2.x essaie d'évaluer harsha comme une variable plutôt que comme une chaîne. Pour éviter cela, nous pouvons utiliser des guillemets doubles autour de notre entrée comme "harsha":
entrée brute()
La fonction raw_input () `n'évalue pas, elle lit simplement ce que vous entrez.
Exemple:
Exemple:
Dans l'exemple ci-dessus, j'essayais simplement d'évaluer l'entrée utilisateur avec la
eval
fonction.la source
Je voudrais ajouter un peu plus de détails à l'explication fournie par tout le monde pour les utilisateurs de python 2 .
raw_input()
, qui, à présent, vous savez qu'il évalue 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 prendra en considération, c'est que les données saisies seront des chaînes, qu'il s'agisse ou non d'une chaîne réelle ou int ou quoi que ce soit.Alors que
input()
d'autre part essaie de comprendre les données saisies par l'utilisateur. Ainsi, l'entrée commehelloworld
afficherait même l'erreur comme 'helloworld is undefined
'.En conclusion, pour python 2 , pour entrer aussi une chaîne, vous devez la saisir comme '
helloworld
' qui est la structure commune utilisée en python pour utiliser des chaînes.la source
Si vous voulez vous assurer que votre code s'exécute avec python2 et python3, utilisez la fonction input () dans votre script et ajoutez ceci pour commencer votre script:
la source