Python:如何在模块中使用主文件的变量?

9 投票
5 回答
23187 浏览
提问于 2025-04-16 17:41

我有两个文件,分别是 main.py 和 irc.py。
main.py 的内容是:

import irc
var = 1
func()

irc.py 的内容是:

def func():
    print var

当我尝试运行 main.py 时,出现了这个错误:

NameError: global name 'var' is not defined

我该怎么才能让它正常工作呢?

@编辑
我原以为有更好的解决办法,但不幸的是,我找到的唯一方法是再创建一个文件,并把它导入到这两个文件中。
main.py 的内容是:

import irc
import another
another.var = 1
irc.func()

irc.py 的内容是:

import another
def func():
    print another.var

另一个文件的内容是:

var = 0

5 个回答

4

有两个选择。

from main import var

def func():
    print var

这个会把原始名称的引用复制到导入的模块里。

import main

def func():
    print main.var

这个让你可以使用另一个模块里的变量,如果需要的话还可以修改它。

9

好的,这是我的代码,运行得很好:

func.py:

import __main__
def func():
    print(__main__.var)

main.py:

from func import func

var="It works!"
func()
var="Now it changes!"
func()
11

不要这样做。把它传进去。尽量让你的代码保持独立:一个模块不应该依赖于另一个模块的内部实现。相反,尽量暴露出最少的信息。这样一来,每次你想让事情稍微有点不同的时候,就不需要改变整个世界了。

main.py

import irc
var = 1
func(var)

irc.py

def func(var):
    print var

撰写回答