如何将导入函数中的变量携带到主文件中(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()
我正在制作一款小游戏,想要一个位于单独的 .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()