Reputation: 73
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)
Upvotes: 1
Views: 114
Reputation: 4015
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.
Upvotes: 2
Reputation: 351
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!!
def fun(var):
print(gvar)
gvar = 5
fun(gvar)
Upvotes: 0
Reputation: 18249
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
.
Upvotes: 0