Quelle est la différence entre raw_input()
et input()
dans python3.x?
La différence est que raw_input()
n'existe pas dans Python 3.x, contrairement à input()
. En fait, l'ancienne raw_input()
a été renommée en input()
et l'ancienne input()
a disparu, mais peut être facilement simulée à l'aide de eval(input())
. (N'oubliez pas que eval()
est diabolique. Essayez si possible d'utiliser des méthodes plus sûres pour analyser votre entrée.)
En Python 2 , raw_input()
renvoie une chaîne et input()
tente d'exécuter l'entrée en tant qu'expression Python.
Comme obtenir une chaîne était presque toujours ce que vous souhaitiez, Python 3 le fait avec input()
. Comme le dit Sven, si vous voulez l'ancien comportement, eval(input())
fonctionne.
raw_input()
prend exactement ce que l'utilisateur a saisi et le renvoie sous forme de chaîne.
input()
prend d'abord la raw_input()
, puis effectue également une eval()
.
La principale différence est que input()
attend une instruction python syntaxiquement correcte, contrairement à raw_input()
.
raw_input()
a été renommé en input()
alors input()
renvoie la chaîne exacte.input()
a é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 de eval(input())
.
En Python 3, raw_input()
n'existe pas, ce qui a déjà été mentionné par Sven.
En 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 tente d'évaluer harsha en tant que variable plutôt qu'en tant que chaîne. 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
entrée brute()
La fonction raw_input () `n'évalue pas, elle lit simplement ce que vous entrez.
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
.
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, évalue les données saisies par l'utilisateur sous forme de chaîne. Cela signifie que python n'essaie même plus de comprendre les données saisies. Tout ce qui sera pris en compte, c'est que les données saisies seront des chaînes, que ce soit ou non une chaîne, int ou autre.
Alors que input()
essaye en revanche de comprendre les données saisies par l'utilisateur. Ainsi, l'entrée telle que helloworld
afficherait même l'erreur sous la forme 'helloworld is undefined
'.
En conclusion, pour python 2 , pour entrer une chaîne, vous devez également la saisir comme 'helloworld
', qui est la structure commune utilisée dans python pour utiliser des chaînes.
Si vous voulez vous assurer que votre code est en cours d'exécution avec python2 et python3, utilisez function input () dans votre script et ajoutez ceci au début de votre script:
from sys import version_info
if version_info.major == 3:
pass
Elif version_info.major == 2:
try:
input = raw_input
except NameError:
pass
else:
print ("Unknown python version - input function not safe")