我不完全是菜鸟,但我也不是最好的 Python 开发人员。最近我一直在尝试制作一个程序,在main.py的全局范围内创建一个变量,main中的函数调用file2.foo(),file2导入main并编辑变量,然后main调用file3.bar (),其中 file3 导入相同的变量,它将使用 file2 中更新的数据执行操作
我知道这个问题可能没有真正的解决方案,我应该只使用 returns 来更新 main 中的 var ,但我希望你们中的一些人可能知道一种使其静态的方法,或者有一个更简单的解决方案通过引用传递
我正在尝试做的一个例子:
main.py:
import file2, file3
var = 0
if __name__ == '__main__':
var = 3
file2.foo()
# var should now be 6
file3.bar()
# var should now be 7
print(var)
file2.py:
import main
def foo():
main.var += 3
file3.py:
import main
def bar():
main.var += 1
我知道导入文件会像类一样重新初始化它的变量,但我也知道如果类的所有实例都在同一个文件中,则 python 类可以具有静态变量。 我尝试过使用第四个文件来存储
var = 0
并让其他三个文件导入它,并且我还尝试在第四个文件中设置一个类,如下所示:
第四个文件:
class a:
static_var = 0
def __init__(self) -> None:
self.var = static_var
然后让所有其他文件执行
from file4 import a; global = a()
,然后使用 global.var += some_integer
访问它
我已经尝试查找此问题,但据我所知没有其他人遇到同样的问题。 任何帮助都是值得赞赏的,特别是如果它只是告诉我没有办法做到这一点。非常感谢!
并不是说我一定支持这种方法,但你可以通过将“静态变量”放入新文件中来实现你想要的:
# main.py
import file1, file2, file3
if __name__ == '__main__':
print("in main:", file1.var)
file2.foo()
# var should now be 6
file3.bar()
# var should now be 7
print("in main:", file1.var)
# file1.py
var = 0
#file2.py
import file1
def foo():
file1.var = 6
# file3.py
import file1
def bar():
file1.var += 1
阅读 Python 文档中的如何导入文件应该会让您受益匪浅:https://docs.python.org/3/reference/import.html