问题
I have 2 files main.py and irc.py.
main.py
import irc
var = 1
func()
irc.py
def func():
print var
When I try to run main.py I'm getting this error
NameError: global name 'var' is not defined
How to make it work?
@Edit
I thought there is a better solution but unfortunately the only one i found is to make another file and import it to both files
main.py
import irc
import another
another.var = 1
irc.func()
irc.py
import another
def func():
print another.var
another.py
var = 0
回答1:
Don't. Pass it in. Try and keep your code as decoupled as possible: one module should not rely on the inner workings of the other. Instead, try and expose as little as possible. In this way, you'll protect yourself from having to change the world every time you want to make things behave a little different.
main.py
import irc
var = 1
func(var)
irc.py
def func(var):
print var
回答2:
Well, that's my code which works fine:
func.py:
import __main__
def func():
print(__main__.var)
main.py:
from func import func
var="It works!"
func()
var="Now it changes!"
func()
回答3:
Two options.
from main import var
def func():
print var
This will copy a reference to the original name to the importing module.
import main
def func():
print main.var
This will let you use the variable from the other module, and allow you to change it if desired.
回答4:
Well, var in the function isn't declared. You could pass it as an argument. main.py
import irc
var = 1
func(var)
irc.py
def func(str):
print str
来源:https://stackoverflow.com/questions/6011371/python-how-can-i-use-variable-from-main-file-in-module