python - 如何从 Python 中的不同文件更改函数中变量的值?
问题描述
我有两个文件,比如 file1 和 file2。我希望能够从 file2 中的 file1 编辑变量(epoch)的值,但它位于 file1 的 main() 函数中。
文件1.py
def main():
global epoch
epoch=1
train(args, model, device, train_loader, optimizer, epoch)
文件2.py
global epoch
var = imageClassifier.main()
epochMenu = Menu(middleFrame)
subEpochMenu = Menu(epochMenu)
epochMenu.add_cascade(label="epoch", menu=subEpochMenu)
subEpochMenu.add_command(Label="1", command=imageClassifier.main(epoch ==
1))
subEpochMenu.add_command(Label="5", command=var.epoch == 5)
请忽略我的菜单设置,因为它更重要,所以我一直在努力让它工作。
解决方案
如何跨模块共享全局变量?
在单个程序中跨模块共享信息的规范方法是创建一个特殊模块(通常称为 config 或 cfg)。只需在应用程序的所有模块中导入配置模块;然后该模块可作为全局名称使用。因为每个模块只有一个实例,所以对模块对象所做的任何更改都会在各处反映出来。例如:
配置文件:
x = 0 # Default value of the 'x' configuration setting
模组.py:
import config config.x = 1
主要.py:
import config import mod print(config.x)
就您而言,这意味着您需要:
创建一个文件
config.py
:epoch = 1
修改
file1.py
:import config def main(): train(args, model, device, train_loader, optimizer, config.epoch)
修改
file2.py
:import config ... subEpochMenu.add_command(Label="1", command=imageClassifier.main(config.epoch == 1))
推荐阅读
- c++ - 如何在 Visual Studio 2019 C++ 中创建非虚拟文件夹
- android - 即使在存储权限和 SU 之后尝试访问 /system/build.prop 时 EACCES(权限被拒绝)
- python - 如何使用 SQLALCHEMY 从两个表中获取数据
- python - 为什么以“b'...'”形式(使用 Python 字节对象的 b 前缀)解码 base64 字符串会产生意想不到的结果?
- javascript - 如何使用 jQuery Multi Step Form Wizard Plugin 创建指向选项卡的链接
- reactjs - 为什么我必须在这个 JSX 元素中使用扩展运算符?
- php - 如何在不显示 ID 号的情况下使用 Yii2 Sluggable Behavior?
- javascript - 电子表格.values.get 但与其他工作表
- image - MATLAB图像处理--如何提高寻找圆度算法的准确率?--
- swift - 在 XCTestCase 中读取测试数据时出现“中断的系统调用”