繁体   English   中英

Python在另一个模块中更改变量并将其保存

[英]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更改为指向值为2int对象。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM