pygame.init() 到底做了什么?

Cur*_*ill 7 python pygame

我读过/看过的每个 pygame 教程都说在你考虑做任何其他事情之前将“pygame.init()”挤进你的代码中。显然,它初始化 pygame 模块或其他东西,这似乎很重要。

直到我想从我的代码中删除 'pygame.init()' 行,只是为了看看会发生什么。瞧,我的游戏完全一样。

我上网,再一次,无论我走到哪里,我都被告知 'pygame.init()' 是必要的。但不,显然不是,因为我只是从我的代码中取出它,它工作得很好。

所以,不用说,我很困惑。如果有人解释,我将不胜感激:

a) pygame.init() 的功能

b) pygame 程序中是否需要它。如果是,那么为什么我的游戏可以工作,如果不是,那么什么时候需要它?

c) 你认为我应该知道的任何其他事情

Iva*_*sky 5

来自www.pygame.org

pygame.init() 初始化所有导入的 pygame 模块。如果模块失败,则不会引发任何异常,但如果成功和失败,inits 的总数将作为元组返回。您始终可以手动初始化单个模块,但 pygame.init() 初始化所有导入的 pygame 模块是一种开始一切的便捷方式。各个模块的 init() 函数在失败时会引发异常。

此外,在这里我们可以看到在开始时这样做是安全的:

多次调用此 init() 是安全的,因为重复调用将不起作用。即使您拥有 pygame.quit() 所有模块,也是如此。

最后,我认为为什么总是在开始时使用它的主要原因:

这将尝试为您初始化所有 pygame 模块。并非所有 pygame 模块都需要初始化,但这会自动初始化需要初始化的模块。

所以主要结论是pygame.init()安全地初始化所有导入的 pygame 模块,而不管这些模块是否确实需要初始化;但由于它对那些这样做的人有用,它省去了单独手动初始化每个模块的麻烦。

  • 我认为对我来说最重要的是“并非所有 pygame 模块都需要初始化”。我正在运行一个相对较小的游戏,仅使用几个 pygame 模块,因此它们不需要初始化也不是不可能的。感谢你的回答。 (2认同)