我有2个文件main.py和irc.py.
main.py
import irc
var = 1
func()
irc.py
def func():
print var
当我尝试运行main.py时,我收到此错误
NameError:未定义全局名称'var'
如何让它发挥作用?
@Edit
我认为有一个更好的解决方案,但不幸的是,我找到的唯一一个是制作另一个文件并将其导入两个文件
main.py
import irc
import another
another.var = 1
irc.func()
irc.py
import another
def func():
print another.var
another.py
var = 0
答案 0 :(得分:11)
别。传递它。尝试并尽可能地将代码保持分离:一个模块不应该依赖另一个模块的内部工作。相反,尝试尽可能少地暴露。通过这种方式,您可以保护自己不必每次想要让事情变得有点不同时改变世界。
<强> main.py 强>
import irc
var = 1
func(var)
<强> irc.py 强>
def func(var):
print var
答案 1 :(得分:6)
嗯,这是我的代码工作正常:
func.py:
import __main__
def func():
print(__main__.var)
main.py:
from func import func
var="It works!"
func()
var="Now it changes!"
func()
答案 2 :(得分:2)
两个选项。
from main import var
def func():
print var
这会将对原始名称的引用复制到导入模块。
import main
def func():
print main.var
这将允许您使用其他模块中的变量,并允许您根据需要进行更改。
答案 3 :(得分:0)
嗯,没有声明函数中的var。您可以将其作为参数传递。 main.py
import irc
var = 1
func(var)
irc.py
def func(str):
print str