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)

Asked By: mikhael

||

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.

Answered By: Robin Zigmond

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.

Answered By: wuarmin

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)
Answered By: Agent_Orange
Categories: questions Tags: , ,
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.