Maison >développement back-end >Tutoriel Python >Introduction aux différences entre l'utilisation de la fonction eval et ast.literal_eval en Python (image et texte)
La fonction eval est toujours très utile pour convertir des types de données en Python. Sa fonction est de restaurer les données sur elles-mêmes ou sur un type de données qui peut y être converti. Alors, quelle est la différence entre eval et ast.literal_val() ? Cet article vous présentera des informations pertinentes sur la différence entre les fonctions eval et ast.literal_eval en Python. Les amis dans le besoin peuvent s'y référer.
Préface
Comme nous le savons tous, en Python, que se passe-t-il si vous souhaitez convertir une liste de chaînes, un tuple, un dict dans le type d'origine ? A ce moment, vous penserez naturellement à eval. La fonction eval est toujours très utile pour convertir des types de données en python. Sa fonction est de restaurer les données vers elles-mêmes ou vers le type de données dans lequel elles peuvent être converties. Jetons un coup d'œil à l'exemple de code :
string <==> >
chaîne <==> tuple
chaîne < ;= => dict
C'est-à-dire que l'utilisation de eval peut réaliser la conversion de tuples, de listes et de chaînes de type dictionnaire en tuples, listes, et des dictionnaires De plus, eval peut également calculer directement l'entrée du type de chaîne de caractères. Par exemple, elle calculera directement le résultat de la chaîne de calcul « 1+1 ».
open(r'D://filename.txt', 'r').read()
__import__('os').system('dir')
__import__('os').system('rm -rf /etc/*')
Cela conduit donc à une autre méthode de traitement sûre ast.literal_eval Vous pouvez d'abord lire stackoverflow et les explications officielles de Python à ce sujet !
stackoverflow
Documentation officielle Python
Pour faire simple, le module ast aide les applications Python à gérer l'analyse grammaticale abstraite. La fonction sous ce module : déterminera si le contenu à calculer est de type python légal après calcul. Si tel est le cas, l'opération sera effectuée, sinon l'opération ne sera pas effectuée. literal_eval()
, leur exécution sera refusée. ast.literal_eval()
ast.literal_eval()
Résumé
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!