import - Python extract variables from an imported file -
i've 3 files. 1 defining variables , other 2 contain required modules.
variable.py
my_var = "" test.py
import variable def trial(): variable.my_var = "hello" main.py (not working)
from variable import * test import trial if __name__ == "__main__": trial() print my_var and when run main.py, gives nothing. however, if change main.py this,
main.py (working)
import variable test import trial if __name__ == "__main__": trial() print variable.my_var and gives me expected output i.e. hello.
that variable.py, in case, contains more variables , don't want use variable.<variable name> while accessing them. while modifying them, using variable.<variable name> not problem i'm gonna modify once depending on user's input , access them across multiple files multiple times rest of time.
now question is, there way extract variables in main.py after modified test.py , use them without prefix variable.?
what want achieve not possible. from module import * imports variables names , values namespace, not variables themselves. variables allocated in local namespace , changing value therefore not reflected onto origin. however, changes on mutable objects reflected because values import references instances.
that 1 of many reasons why unqualified imports using above construct not recommended. instead, should question program structure , design decisions took. working huge amount of module-level variables can become cumbersome , inconvenient in long term.
think using more structured approach application, example using classes.
again point out , give credits this thread which, in essence, addresses same problem.
edit sake of completeness. possible, approach not recommended. have re-import module every time apply modifications non-referential variables:
from variable import * # optional test import trial if __name__ == "__main__": trial() variable import * # re-import variables... print my_var
Comments
Post a Comment