如何将导入函数中的变量携带到主文件中(Python 3.8.3

How to carry variables from imported functions to the main file (Python 3.8.3

我正在制作一款小游戏,想要一个位于单独的 .py 文件中的设置页面功能,以保持内容更简洁且易于编辑。我有一个名为 textSpeed 的全局变量(我使用 global 关键字在函数中正确使用),我在这个 runSettings 函数中更改了它,但是当我在我的主文件中打印回变量时它没有改变。

主文件中的代码(main.py)

from settings import runSettings
textSpeed = "not set"
runSettings()
print(textSpeed)

来自设置函数文件的代码(settings.py)

def runSettings():
    global textSpeed
    textSpeed = input("select text speed. ")
    print(textSpeed)
    return textSpeed

为避免循环导入,如果您希望保持这种方式,我建议您创建第三个文件。我们用下面的代码称它为 varSpeed.py

global textSpeed
textSpeed = "not set"

然后您可以import varSpeed从其他两个文件访问该变量而不会出现循环问题。

textSpeed 是局部变量 - 对主模块而言是局部的。

您需要从设置中引用变量。

import settings 
settings.textSpeed = "not set"
runSettings()
print(settings.textSpeed)

问题是您试图更改来自不同文件的变量,而您还没有导入该文件。我认为处理此问题的最简单方法是使用 class 变量,如下所示:

主文件:

from class_file import MyClass

MyClass.run_settings()
print(MyClass.text_speed)

设置文件:

class MyClass:

    text_speed = 'n/a'

    @staticmethod
    def run_settings():
        MyClass.text_speed = input("Select text speed: ")
        return MyClass.text_speed

runSettings 函数也已经返回它设置的值。不要混淆命名空间和导入全局变量,只需使用 main.py:

中的返回值
textSpeed = runSettings()