我有 2 个文件 main.py 和 irc.py。
main.py
import irc
var = 1
func()
irc.py
def func():
print var
当我尝试运行 main.py 时出现此错误
名称错误: 未定义全局名称"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
不要。把它传进去。尝试保持代码尽可能分离:一个模块不应依赖于另一个模块的内部工作原理。相反,尝试尽可能少地暴露。通过这种方式,您将保护自己,避免每次想要让事情表现得有点不同时都必须改变世界。
main.py
import irc
var = 1
func(var)
irc.py
def func(var):
print var
好吧,这是我的代码,工作正常:
func.py:
import __main__
def func():
print(__main__.var)
main.py:
from func import func
var="It works!"
func()
var="Now it changes!"
func()
两个选项。
from main import var
def func():
print var
这会将对原始名称的引用复制到导入模块。
import main
def func():
print main.var
这将允许您使用其他模块中的变量,并允许您根据需要更改它。
好吧,函数中的 var 没有声明。 您可以将其作为参数传递。main.py
import irc
var = 1
func(var)
irc.py
def func(str):
print str
Samir 所说的适用于 Python 2
对于 python 3,您需要这样做。
main.py
import irc
from irc import func
var = 1
func(var)
irc.py
irc.py
def func(var):
print(var)