5

Suppose I have two Python files:

  1. 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()
  1. 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
asked Jan 27, 2021 at 6:44
1
  • 1
    use globals() to achieve what you are trying to achieve! Commented Jan 27, 2021 at 6:54

2 Answers 2

6

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
Sign up to request clarification or add additional context in comments.

Comments

2

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

Comments

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.