IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Variables dynamiques en python 3


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 467
    Par défaut Variables dynamiques en python 3
    Bonjour,

    Est il possible de créer dynamiquement des variables avec Python 3 ?

    Par exemple en php, on peut faire cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $var = 'ma_variable_dynamique';
    $$var = 'toto';
    echo $ma_variable_dynamique; // retourne toto
    Existe-t-il un équivalent en Python ?
    Merci de vos lumières

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Comme quoi, PHP est loin d'enseigner les bonnes pratiques.

    Mais si tu y tiens vraiment...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> locals()
    {'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, '__package__': None}
    >>> locals()['hello'] = 'haha'
    >>> hello
    'haha'

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    Salut Antoine,



    Comme quoi, PHP est loin d'enseigner les bonnes pratiques.
    Est-ce que tu pourrais développer stp ?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 736
    Par défaut
    Salut,

    L'exemple d'Antoine pourrait être plus proche de PHP en l'écrivant ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    var = 'ma_variable_dynamique';
    locals()[var] = 'toto';
    print ma_variable_dynamique; // retourne toto
    Mais bon locals() est un dict comme un autre et il n'est pas choquant d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    dd = dict()
    var = 'ma_variable_dynamique';
    dd[var] = 'toto';
    print dd['ma_variable_dynamique']; // retourne toto
    Ce qui fait que la variante locals est plus glauque que la variante dict relève de l'infame Mr "Side Effect" dont nous parlions dans un autre topic.

    Ce fut une mauvaise pratique dans PHP car certaines variables pouvaient être modifiées par injection via les query string des requêtes HTTP.
    Les nouvelles versions de PHP mettent cela dans des dictionnaires avec différents attributs qui bloquent les modifications.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Citation Envoyé par eyquem Voir le message
    Est-ce que tu pourrais développer stp ?
    Outre le fait que cela peu causer des grosses failles de sécurité selon la configuration de PHP (encore aujourd'hui d'ailleurs), c'est surtout une porte ouverte aux bugs et aux conceptions biscornues.

    Imagine, tu as un bug quelque part.
    Tu sais que le souci c'est le contenu de la variable
    qui est injectée dans une fonction.

    Mais, aha ! Quelle est cette fameuse variable ?
    Va falloir rajouter un print dans ton code. Pas grave, mais c'est casse pieds.
    Après, faudra savoir où est déclarée cette variable. Comme avec PHP, tout les fichiers que tu inclus peuvent rajouter du brol dans ton namespace global, c'est très vite le bazard.

    Et des perles comme ça, tu peux en trouver plein dans PHP.
    Par exemple, il est logique qu'on ne puisse pas faire ça:
    Par contre, ce qui suit est tout à fait légal, et est même documenté (à croire qu'ils en sont fiers)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $var = false;
    $var['abracadabra']; // qui retournera Null
    Et puis ya qu'à voir les classes inutiles qu'ils ont collé, les itérateurs mal pensés, et j'en passe des meilleures. C'est à croire que les devs de PHP n'ont pas bien compris l'orienté objets.


    Voilà, pour moi, PHP*est un langage poubelle.
    Hélas, c'est aussi le seul langage à être largement disponible sur les serveurs web. Alors on fait avec, comme tout le monde.

  6. #6
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 467
    Par défaut
    Merci pour vos réponses.

    Antoine a un avis tranché, mais je suis d'accord, les variables dynamiques sont vraiment compliqué à débugger, sans parler des problèmes de sécurité.

    Autant donc ne pas les utiliser, mais j'avoue que dans certains cas (tout au moins celui ayant suscité cette question pour moi), c'est assez commode : programme très court (débugage hyper facile), usage interne exclusivement (pas de problème de sécu), toujours plus pressé quand c'est pour soi que quand c'est pour les autres (mode fainéant ...)

  7. #7
    Membre éprouvé

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Par défaut
    Bonjour.
    Citation Envoyé par max-mag
    Antoine a un avis tranché, mais je suis d'accord, les variables dynamiques sont vraiment compliqué à débugger, sans parler des problèmes de sécurité.

    Autant donc ne pas les utiliser, mais j'avoue que dans certains cas (tout au moins celui ayant suscité cette question pour moi), c'est assez commode : programme très court (débugage hyper facile)...
    Peux-tu donner un exemple concret et court ? Ce serait pour voir si cela est vraiment plus pratique.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. variable dynamique dans une fonction javascript
    Par Shivaneth dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/04/2005, 15h58
  2. Variables dynamiques
    Par CriPpLe dans le forum C++
    Réponses: 5
    Dernier message: 23/02/2005, 11h56
  3. [SQL SERVER 2000] Noms de variables dynamiques
    Par cassoulet dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 08/09/2004, 11h44
  4. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 17h51
  5. [LG]Problême Variable dynamique de types différents
    Par pierrOPSG dans le forum Langage
    Réponses: 2
    Dernier message: 29/04/2004, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo