我已经习惯了PHP,全局变量在整个项目中都是可用的,包含/需要一个PHP文件就像是在那个地方“注入”它的代码行:整个事情都会被“视”为一个文件,所有变量都会被本能地访问
Python以一种不同的方式工作,我想知道一些好的做法,以便通过将大型项目拆分为文件使其更易于管理
假设我有一个名为configs.py的文件,它类似于:
FRAME_DURATION = int(1000 / 25)
SCREEN_SIZE = 500
LIGHT_GREY = (190,190,190)
RED = (255,0,0)
GREEN = (0,255,0)
YELLOW = (255,255,0)
#etc...
然后,在Main.py文件中,我可以执行以下操作:
import pygame
from configs import *
pygame.init()
SCREEN = pygame.display.set_mode((SCREEN_SIZE, SCREEN_SIZE),1)
SCREEN.fill(LIGHT_GREY)
run = True
while run:
pygame.time.delay(FRAME_DURATION )
#HERE I'M SUPPOSED TO CHECK THE KEYBOARD AND MOUSE EVENTS
pygame.display.update()
pygame.quit()
这很好,因为我们只处理变量。但是,如果我想将事件侦听器放到另一个单独的文件中,我会遇到一些“麻烦”。假设我想要一个包含所有函数的文件。我将其命名为actions.py,它包含以下函数:
def checkEvents():
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
run = False
if event.key == pygame.K_r:
pass
如果我希望能够在main.py文件中调用checkEvents()函数,我会得到一个NameError,因为它无法识别actions.py文件中的pygame模块
我似乎无法让它工作:如果我在两个文件上导入它(我知道这是sup-optimal),游戏会启动,但键和退出键什么也不做。我猜checkEvents()函数正在侦听pygame的另一个实例
无论如何,我想知道是否有一种方法使模块“全球可用”。。。在主文件中导入一次,并在整个项目中使用它,包括在其他导入的自定义模块中
最终结果应如下所示:
import pygame
from configs import *
import actions
pygame.init()
SCREEN = pygame.display.set_mode((SCREEN_SIZE, SCREEN_SIZE),1)
SCREEN.fill(LIGHT_GREY)
run = True
while run:
pygame.time.delay(FRAME_DURATION )
actions.checkEvents()
pygame.display.update()
pygame.quit()
您只需在
actions.py
中使用import pygame
另一个问题是
run
,您必须从checkEvents()
返回它然后在{}中得到{}
相关问题 更多 >
编程相关推荐