首页 > 解决方案 > 如何从 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)

请忽略我的菜单设置,因为它更重要,所以我一直在努力让它工作。

标签: pythonfunctionvariablestkinter

解决方案


来自Python 的常见问题解答

如何跨模块共享全局变量?

在单个程序中跨模块共享信息的规范方法是创建一个特殊模块(通常称为 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)

就您而言,这意味着您需要:

  1. 创建一个文件config.py

    epoch = 1
    
  2. 修改file1.py

    import config
    
    def main(): 
        train(args, model, device, train_loader, optimizer, config.epoch)
    
  3. 修改file2.py

    import config
    ...
    subEpochMenu.add_command(Label="1", command=imageClassifier.main(config.epoch == 
    1))
    

推荐阅读