mikhael
mikhael

Reputation: 73

Access to global variables from a module in Python?

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

Answers (3)

wuarmin
wuarmin

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

Agent_Orange
Agent_Orange

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!!

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)

Upvotes: 0

Robin Zigmond
Robin Zigmond

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

Related Questions