Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > fr.comp.lang.python > #3399

Re: intérêt de la fonction eval ?

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>

Show all headers | View raw


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 | NextPrevious in thread | Next in thread | Find similar


Thread

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