Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > fr.comp.lang.python > #3399
| From | Julien Palard <julien@palard.fr> |
|---|---|
| Newsgroups | fr.comp.lang.python |
| Subject | Re: intérêt de la fonction eval ? |
| Date | 2020-12-04 00:31 +0100 |
| Organization | Aioe.org NNTP Server |
| Message-ID | <rqbsh5$19nu$1@gioia.aioe.org> (permalink) |
| References | <rpu2t8$5k1$1@gioia.aioe.org> |
Bonjour,
Le 2020-11-28 à 18:54, Dominique a écrit :
> Tout est dans le sujet : à quoi sert la fonction eval par rapport à un
> print normal ou une bête égalité.
Les cas d'utilisation légitime sont rares, eval reste un aimant à faille
de sécurité.
Le gros cas d'utilisation légitime qui me vient en tête c'est pour
"interpréter" de la configuration.
Par exemple, si tu as un fichier de conf, (toml, ini, yaml, peu
m'importe), et que tu veux que ton utilisateur puisse entrer une durée
en seconde, tu peux lui permettre d'écrire :
timeout: 60 * 60 * 24
au lieu de `timeout: 86400`, qui est plus lisible. Dans ton code ça se
traduira par un :
timeout = eval(config["timeout"])
Dans la même série la configuration pourrait permettre de nommer une
classe à utiliser pour faire une certaine chose, et utiliser
`eval(class_name)` pour instancier la classe, logging le fait par
exemple [1]:
handlers:
console:
class: logging.StreamHandler
Ou une condition :
run_at: hour < 10
qui se traduira dans le code par un :
eval(config["run_at"], {}, {"hour": datetime.datetime.now().hour})
On trouve d'autres utilisations légitimes de eval pour exécuter du code
dans un autre contexte (dans un IDE ou un débogeur par exemple) en
utilisant le 2ème et 3ème paramètre.
Ça reste des cas très spécifiques, mais suffisants pour ne pas supprimer
eval. Et je ne peux que conclure par : attention, c'est un aimant à
failles de sécurité.
[1]: https://docs.python.org/3/howto/logging.html#configuring-logging
--
[Julien Palard](https://mdk.fr)
Back to fr.comp.lang.python | Previous | Next — Previous in thread | Next in thread | Find similar
intérêt de la fonction eval ? Dominique <zzz@aol.com.invalid> - 2020-11-28 18:54 +0100
Re: intérêt de la fonction eval ? Julien Palard <julien@palard.fr> - 2020-12-04 00:31 +0100
Re: intérêt de la fonction eval ? Dominique <zzz@aol.com.invalid> - 2020-12-04 05:38 +0100
Re: intérêt de la fonction eval ? Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2020-12-04 07:38 +0100
Re: intérêt de la fonction eval ? Dominique <zzz@aol.com.invalid> - 2020-12-05 05:33 +0100
Re: intérêt de la fonction eval ? Benoit Izac <use.reply.to@INVALID.ADDRESS> - 2020-12-05 08:59 +0100
Re: intérêt de la fonction eval ? Dominique <zzz@aol.com.invalid> - 2020-12-06 04:44 +0100
csiph-web