pygame 和 pygame.SOMETHING 之间的区别

difference between pygame and pygame.SOMETHING

最近,我一直在摆弄pygame。我注意到即使我导入了 pygame,我仍然可以导入 pygame.local 和 pygame.sprite(from... import... 以减少我以后需要输入的单词) . pygame和pygame.SOMETHING有什么关系?我以为它只是一个 pygame 模块,现在我有点困惑了。请给我一个解释或指导我阅读一些文章。 如有任何帮助,我们将不胜感激!

将 pygame 视为一个关于如何在 python 中制作 GUI 的图书馆或档案馆。您可以从图书馆获得一本特定的书,例如关于如何制作精灵的书。它仍然是图书馆的一部分,无论你是坐在图书馆里看还是借阅后看,内容都是一样的。

您可以 from pygame import sprite 在您的代码中将 sprite() 用作 pygame.sprite() 的 shorthand,它的整体功能相同。

考虑一个文件名为 foo.py.

的模块 foo

如果内容看起来像:

# foo.py
def bar():
    return 'bar'


def baz():
    return 'baz'

然后您可以通过几种方式访问​​函数 barbaz。 您可以将模块作为一个整体导入。

import foo
print(foo.bar())

或单独:

from foo import bar
print(bar())

您也可以同时执行这两项操作,因为名称 foo.barbar 不冲突。

在幕后,它只是将 globalsdict 中的 foo.barbar 映射到同一个函数。您可以使用 print(pygame.sprite is sprite).

进行测试

显然,像 pygame 这样的包中还有更多内容,但基本前提是 pygame,而 pygame.sprite 只是 dict 中的一个名称。这就是它们可以共存的原因。

一个简单的例子是:

def bar():
    return 'bar'

foo_dict = {'bar': bar}
globals_dict = {'foo.bar': foo_dict['bar'], 'bar': bar}

# import foo
# foo.bar()
globals_dict['foo.bar']()

# from foo import bar
# bar()
globals_dict['bar']()

如你所见,你指的是什么并不重要,它们都叫同一个东西。