Access to global variables from a module in Python?
Question:
let’s start with a basic code that uses a global variable :
def fun():
print(gvar)
gvar = 3
fun()
that of course prints “3” in the console.
Then, I move my function “fun” in a module “mymod”, and do :
from mymod import *
gvar=3
fun()
The result is a NameError exception (gvar
is not found)
How can I solve this ? I have to mention that I need to access to various global variables which name is not always the same (the context is complex and I do not describe it now to focus on the problem I have for now)
Answers:
Just move gvar
into mymod
. You don’t even need to import
it unless you need to access its value independently.
In other words, don’t try to use gvar
as a genuine global, but leave it as an implementation detail of mymod
.
The only global variables python has, are module scoped. So in your case the variable gvar
is not visible in the module mymod
.
If you want to use gvar
in an imported module, pass gvar
as parameter to a function of mymod
. If gvar
belongs to mymod
, define it there.
I think you are doing this thing incorrectly, rather than making a variable into one script and trying to execute a function in another script using first variable, you can also send the variable to function header of function!!
So in your case your function will be like
def fun(var):
print(gvar)
And Call Your Function From Another Script With:
gvar = 5
fun(gvar)
let’s start with a basic code that uses a global variable :
def fun():
print(gvar)
gvar = 3
fun()
that of course prints “3” in the console.
Then, I move my function “fun” in a module “mymod”, and do :
from mymod import *
gvar=3
fun()
The result is a NameError exception (gvar
is not found)
How can I solve this ? I have to mention that I need to access to various global variables which name is not always the same (the context is complex and I do not describe it now to focus on the problem I have for now)
Just move gvar
into mymod
. You don’t even need to import
it unless you need to access its value independently.
In other words, don’t try to use gvar
as a genuine global, but leave it as an implementation detail of mymod
.
The only global variables python has, are module scoped. So in your case the variable gvar
is not visible in the module mymod
.
If you want to use gvar
in an imported module, pass gvar
as parameter to a function of mymod
. If gvar
belongs to mymod
, define it there.
I think you are doing this thing incorrectly, rather than making a variable into one script and trying to execute a function in another script using first variable, you can also send the variable to function header of function!!
So in your case your function will be like
def fun(var):
print(gvar)
And Call Your Function From Another Script With:
gvar = 5
fun(gvar)