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 :

[Python 2.7] accès variable depuis script principal


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite Avatar de genteur slayer
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2002
    Messages
    710
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2002
    Messages : 710
    Par défaut [Python 2.7] accès variable depuis script principal
    Bonjour, je ne suis pas très expérimenté en Python et je cherche à faire un outil de pilotage de calcul.
    Pour cela j'ai besoin de définir un tas de paramètres dans mon script principal, puis de les utiliser plus loin dans des modules/packages etc...

    j'ai donc un script principal qui resemble à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    opt_toto=450
    import parameter
    opt_titi=10
    parameter.printParam()
    et un fichier parameter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    from __main__ import *
    def printParam():
        print("\nVariables list")
        var=globals()
        for pre in _allowed_prefix:
            for key in var.keys():
                if not key.startswith(pre):
                    continue
                if type(var[key]==str):
                    outstr=str(key)+'="'+str(var[key])+'"'
                else:
                    outstr=str(key)+"="+str(var[key])
     
                print(outstr)
    ce code un problème de taille:
    il m'affiche bien la valeur de 'opt_toto' mais pas celle de 'opt_titi'.
    de plus si je modifie la valeur de opt_toto après le import, il n'y a pas de mise à jour.

    quel est le moyen d’accéder à ces variables?

    pour aller plus loin:
    en gros, ce premier script est un script qui sera écrit par un utilisateur, il doit être le plus simple possible d'où une écriture directe des variables (pas de 'setParam' par exemple) et l'idée c'est de faire tous les imports au début de ce script, les variables sont définies après.

    Merci pour vos réponses!

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    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 743
    Par défaut
    Salut,

    Citation Envoyé par genteur slayer Voir le message
    ce code un problème de taille:
    il m'affiche bien la valeur de 'opt_toto' mais pas celle de 'opt_titi'.
    de plus si je modifie la valeur de opt_toto après le import, il n'y a pas de mise à jour.
    J'imagine que la cause du premier problème est du au fait que "opt_titi" n'est pas encore définit lors de "import parameter"... mais je ne sais pas comment vous avez bricolé vos imports pour arriver à cela. Le 2ème problème est lié: le "from module import *" va créer dans le module courant (i.e. globals()) des variables associées aux objets définis dans "module". Si vous assignez d'autres objets dans un module, çà ne va pas se propager car une variable n'est pas une référence (à une adresse mémoire qui resterait la même lorsqu'on change son contenu) mais l'association clefs/objets dans 2 dictionnaires différents (le globals() de chaque module).

    Citation Envoyé par genteur slayer Voir le message
    en gros, ce premier script est un script qui sera écrit par un utilisateur, il doit être le plus simple possible d'où une écriture directe des variables (pas de 'setParam' par exemple) et l'idée c'est de faire tous les imports au début de ce script, les variables sont définies après.
    Le plus simple est de mettre les variables globals dans un script "globs.py" qui sera importé par main et parameter. Les variables étant accédées via le chemin "globs.variable" (dans ce cas, toutes les variables "partagées" sont dans le même globals()/dictionnaire, celui associé au module globs).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Récupération d'une variable depuis un script Python
    Par mounir31400 dans le forum Débuter
    Réponses: 5
    Dernier message: 11/05/2015, 11h31
  2. Récuperer Variable FLEX depuis script PERL
    Par ZiliCa dans le forum ActionScript 3
    Réponses: 0
    Dernier message: 22/03/2009, 16h53
  3. Requetes acces lancées depuis Excel avec variables
    Par jackfred dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 19/06/2007, 15h37
  4. [C#] Problème d'accès à une variable depuis une popup
    Par LE NEINDRE dans le forum ASP.NET
    Réponses: 2
    Dernier message: 03/01/2007, 15h30

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