所以帮助我学习Python我正在构建一个简单的基于文本的小游戏。我正在研究文件的粗略最高级别结构。到目前为止,我有main.py,input.py和commands.py。
main.py
from input import *
x = 1
start()
input.py
from commands import *
def inputLoop():
inString = input('::> ')
tokens = inString.split(' ')
cmd = tokens[0]
args = tokens[1:]
if cmd != '':
try:
commands[cmd](args)
except KeyError:
print('Command not found.')
print('\n')
inputLoop()
def start():
inputLoop()
commands.py
def quit(arg):
input('Goodbye!')
exit()
def echo(arg):
print(' '.join(arg))
commands = {
'exit' : quit,
'echo' : echo
}
正如您所见,main.py导入input.py,它会导入commands.py。这一切都很好,我可以有效地将文本输入映射到函数,并成功传递参数。我遇到的问题是使在main.py中声明的变量可以被commands.py中的函数访问的正确方法。如果我从commands.py导入main.py,它会创建一个导入循环。我知道我错过了一些高级别的设计模式来将整个事物放在一起。
也许我创建了一个主类,一个导入类和一个命令类,并通过每个构造函数传递主类的实例,直到指令器类可以引用它,但这对我来说似乎很狡猾和不优雅。
你将如何构建这个程序?
答案 0 :(得分:1)
如何将变量分隔为“settings.py”并在需要访问时将其导入。
虽然我更喜欢在名为“设置”或“选项”的某个类中管理它们,但是对一个类的更改可能会级联到其他设置中...
此外,如果您在本地范围内(函数内)访问全局变量,则必须将它们声明为全局变量。
s = 1
def func(x):
global s
s=2
否则你只会产生一个名为s
的局部变量