对于我使用time.time()
的扫雷游戏,我已导入time
和pygame
。这是我的错误报告
line 5, in save_score
end = time.time()
AttributeError: module 'pygame.time' has no attribute 'time'
这里你有证据证明我确实导入了时间和pygame:
import sys, math, time
def save_score(name, size, mine):
end = time.time()
~
from pygame import *
如果有人能解释如何避免/修复此错误,我们将不胜感激。
答案 0 :(得分:5)
由于您的行,您遇到了命名空间冲突:
from pygame import *
这会污染您的全局命名空间,包含您可以从pygame导入的所有内容。它使懒惰的生活变得简单 - 你不必引用特定的命名空间来使用pygame的功能。但它也有一些不好的后果。
在这种情况下,您已将“time”作为全局命名空间中的模块导入。当您从pygame导入时,它有一个名为time的子模块。 pygame.time取代你的常规时间模块。
解决此问题的方法是正确使用模块/命名空间。
这样做的一种方法是使用:
,而不是使用from pygame import *
import pygame
但是你必须将pygame放在pygame函数或模块的每个引用前面。这通常是好的,这样你和其他任何阅读你代码的人都知道你正在调用的函数。
您可以使用import ... as
:
import pygame as pg
然后,您可以执行pygame.time
。
pg.time
之类的操作
如果您想要专门放入全局命名空间,可以执行以下操作:
from pygame import foo
或
from pygame import time as pygt
但如果你执行from pygame import time
或from pygame import *
,pygame的时间将覆盖其他时间模块。