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

发布于 2024-11-07 05:45:38 字数 571 浏览 1 评论 0原文

我有 2 个文件 main.py 和 irc.py。
main.py

import irc
var = 1
func()

irc.py

def func():
    print var

当我尝试运行 main.py 时出现此错误

NameError:全局名称“var”未定义

如何使其工作?

@编辑
我认为有一个更好的解决方案,但不幸的是我发现的唯一一个是创建另一个文件并将其导入到两个文件中
main.py

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

irc.py

import another
def func():
    print another.var

another.py

var = 0

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

万水千山粽是情ミ 2024-11-14 05:45:38

不。将其传递进去。尝试使代码尽可能解耦:一个模块不应依赖于另一个模块的内部工作。相反,尝试尽可能少地暴露。通过这种方式,你可以保护自己,避免每次你想让事情变得有点不同时都必须改变世界。

ma​​in.py

import irc
var = 1
func(var)

irc.py

def func(var):
    print var

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
静谧 2024-11-14 05:45:38

嗯,这是我的代码,运行良好:

func.py:

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

main.py:

from func import func

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

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()
甜警司 2024-11-14 05:45:38

两个选择。

from main import var

def func():
    print var

这将对原始名称的引用复制到导入模块。

import main

def func():
    print main.var

这将允许您使用其他模块中的变量,并允许您根据需要更改它。

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.

⒈起吃苦の倖褔 2024-11-14 05:45:38

好吧,函数中的 var 没有声明。您可以将其作为参数传递。
main.py

import irc
var = 1
func(var)

irc.py

def func(str):
    print str

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
陪你搞怪i 2024-11-14 05:45:38

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)

What Samir said works for Python 2

For python 3 you need to do it this way.

main.py

import irc
from irc import func

var = 1
func(var)
irc.py

irc.py

def func(var):
    print(var)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文