#Module variable

1 messages · Page 1 of 1 (latest)

steep cedar
#

Bonsoir (et desole pour la clarte du titre)! Sur la numworks on peut importer un script en tant que module (from script1 import *). Cependant j aimerai pouvoir faire en sorte d importer une variable a la place du nom. Par exemple:
from maVar import *
Avec maVar contenant "script1" par exemple

lone path
#

from script1 import ta_variable

steep cedar
#

Nan

#

maVar = "script1"

from maVar import * #importe script1.py

lone path
#

Ah

#
module = __import__(maVar)
#

Ça fait en gros import maVar as module (qui ne marche pas)

#

Pour le from maVar import *, je regarde ce que je peux faire

#
module = __import__(maVar)
for item in dir(module):
    globals()[item] = getattr(module, item)
lone path
#

Mais je ne sais pas s'il y a plus optimisé (je n'ai pas regardé sur Internet)

lone path
#

Tu peux vouloir remplacer globals() par locals() si tu veux définir le module uniquement dans le contexte actuel : avec globals(), si tu l'utilises dans une fonction, tu pourras aussi accéder au module importé à l'exterieur de cette fonction, alors qu'avec locals(), l'import ne sera effectif que dans le contexte de cette fonction

#

L'avantage d'utiliser globals() est que justement, tu peux faire une fonction pour importer

#

Genre ```python
def import_module_by_name(name):
module = import(maVar)
for item in dir(module):
globals()[item] = getattr(module, item)

import_module_by_name("math")
``` ne sera valide qu'avec globals() (dans l'exemple, ça fait même effet que from math import *)

steep cedar
#

oh merci beaucoup