[英]Python change local variable of function in runtime from another module
[英]Python change variable in another module and save it
我有一个名为my_package的简单python包,其中包含三个文件:
初始化 .py
from .a import func
from .settings import var
settings.py
var = 1
py
import .settings
def func():
settings.var = 2
当我将此程序包添加到PATH并导入时,我在脚本下运行,无法获得预期的结果:
import my_package
my_package.func()
print(my_package.var)
我期望得到“ 2”,但它返回“ 1”。 我在这里做错了什么?
这是因为在import my_package
一个my_package.var
设置指具有价值为int 1
。 在运行my_package.func()
此引用不会被更改,但是my_package.settings.var
更改为指向值为2
新int
对象。
import my_package # imports my_package.var with value 1
my_package.func() # sets my_package.settings.var to 2
print(my_package.var) # prints 1
print(my_package.settings.var) # prints 2
如果您尝试对列表执行相同操作,则可以使其工作方式有所不同。 通过不在my_package.settings.list_var
创建新对象,而是修改现有列表中的条目。
# __init__.py
from .a import func
from .settings import list_var
_
# settings.py
list_var = [1]
_
# a.py
import .settings
def func():
settings.list_var[0] = 2
现在运行类似的代码实际上将更改list_var
import my_package # imports my_package.var with value 1
print(my_package.var[0]) # prints 1
my_package.func() # sets list_var to [2]
print(my_package.var[0]) # prints 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.