如何绕过循环进口?

问题描述

我有一个python文件,其中包含我要使用的所有功能,而我的主要代码还有一个。 我们将函数称为“ functions.py”,将主要函数称为“ main.py”。

我的functions.py文件中的函数需要main.py文件中的变量。尝试将一个导入到另一个中时,出现循环导入错误

示例:

main.py:

from functions import func
variable = 10

func()

functions.py:

from main import variable
def func():
    variable += 1

现在我希望变量为11。

我了解为什么会发生这种情况,但是有什么办法可以使它起作用?

对不起,我的菜鸟问题,谢谢你。

解决方法

执行此操作的最佳方法是将变量作为参数传递给函数。例如:

main.py:

from functions import func
variable = 10

variable = func(variable)

functions.py:

def func(variable):
    variable += 1
    return variable

即使您可以将其导入,或者只是将func移到main.py文件中,Python也会抛出UnboundLocalError抱怨{{1 }}在分配之前使用,因为variable中的variablefunc之外的variable不同。例如:

func

此处,“外部v”在全局范围内,而“内部v”在>>> v = 10 # outer v >>> def func(): v += 1 # inner v >>> func() Traceback (most recent call last): File "<pyshell#4>",line 1,in <module> func() File "<pyshell#3>",line 2,in func v += 1 UnboundLocalError: local variable 'v' referenced before assignment >>> 范围内,因此它们没有引用相同的变量。为了进一步阅读,我建议您查找范围在Python中的工作方式。