在python 3中使用全局变量
如何在模块的任何位置使用和编辑全局变量?我的项目看起来像在python 3中使用全局变量,python,python-3.x,Python,Python 3.x,如何在模块的任何位置使用和编辑全局变量?我的项目看起来像 project/ ---- models/ ---- ---- first.py ---- ---- second.py ---- run.py Run.py是main,我使用它ti start app,其中包含global vars init。您必须将它们导入到您想要在其中使用它们的任何其他模块中。全局变量仅对它们所在的文件是全局的(除非在其他地方导入) 请注意,如果希望将更改传播到导入的模块之外,则需要执行以下两项操作之一: 使用
project/
---- models/
---- ---- first.py
---- ---- second.py
---- run.py
Run.py是main,我使用它ti start app,其中包含global vars init。您必须
将它们导入到您想要在其中使用它们的任何其他模块中。全局变量仅对它们所在的文件是全局的(除非在其他地方导入)
请注意,如果希望将更改传播到导入的模块之外,则需要执行以下两项操作之一:
- 使用非
from
导入语法(例如import foo.bar
然后foo.bar=
)
- 使用可变类型并就地修改(如字典)
原因是,如果使用来自导入的,它将创建一个本地版本的变量,该变量独立于来自其他模块的变量,但具有相同的值。对于可变类型,此值是一个引用,因此只要您在适当的位置修改对象,更改将随处可见(因为所有引用都指向同一个对象)。当我首先导入run.var并编辑它时,第二次导入时,没有结果是run.var
的类型?你如何导入它?(您使用的是import run.var
还是from run import var
?)如果您使用的是from。。。导入…
,尝试切换到import run.var
,然后从run import var
和var=”“
切换到run.var=…
,这是您的问题,然后-当您从run import var使用时,您只需要在名为var
的新局部变量中获取值的副本-如果希望更改在所有实例中传播,您需要导入并使用原始版本(import run.var
)或使用引用类型(如字典或列表)只需修改该项而不覆盖它。