Suppose I have two Python files:
abc.py:
from .config import *
update_a()
print_a() # prints 5
print(a) # prints 2 rather than 5 even after calling update_a() and using global in update_a()
config.py:
a = 2
def update_a():
global a
a = 5
def print_a():
global a
print(a) # prints 5
The global variable in config.py does not seem to have the updated value when accessed from abc.py.
Sabito
5,23310 gold badges39 silver badges66 bronze badges
2 Answers 2
When you do an import say from .config import *, the variable a is imported as a local scope. Any modification to a will happen within the scope in abc.py NOT in config.py whereas the call to update_a() and print_a() is modifying the variable a within config.py
answered Jan 27, 2021 at 6:52
Joe Akanesuvan
2011 silver badge4 bronze badges
Sign up to request clarification or add additional context in comments.
Comments
Adding to Joe's answer, you can achieve what you want with the following piece of code:
import config as config
config.update_a()
config.print_a() # prints 5
# This will print the global variable in 'config.py'
print(config.a) # prints 5
answered Jan 27, 2021 at 6:56
Priyanshul Govil
5897 silver badges20 bronze badges
Comments
lang-py
globals()to achieve what you are trying to achieve!