Pourquoi Python eval(input(“Entrez entrée: ”)) changement d'entrée du type de données?

En Python 3, j'écris une simple commande pour accepter un nombre entier saisi par l'utilisateur ainsi:

x = int(input("Enter a number: "))

Si je saute le int() partie et utilisez simplement x = input("Enter a number: "), mon entrée type de données est une chaîne de caractères, un entier. Je comprends que.

Cependant, si j'utilise la commande suivante:

x = eval(input("Enter a number: "))

l'entrée du type de données est "int".

Pourquoi cela se produit?

peut-être que c'est une dynamique de type case lorsque vous utilisez la fonction eval()?
eval traite l'entrée comme il a été écrit dans le code, de faire x = 3 dans code fait d'un nombre entier, donc x = eval("3") fera aussi x un entier, cependant, de laisser à l'utilisateur d'entrer un code arbitraire en entrée peut être un énorme problème, si ils ont tapé dans open(__file__,'w').close() il serait de supprimer l'exécution de fichier.

OriginalL'auteur lebowski | 2016-06-19