首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >混合pygame.time()和time.time()

混合pygame.time()和time.time()
EN

Stack Overflow用户
提问于 2016-11-22 15:49:23
回答 1查看 375关注 0票数 0

对于一个使用time.time()的扫雷游戏,我已经同时导入了timepygame。这是我的错误报告

代码语言:javascript
运行
复制
line 5, in save_score
    end = time.time()
AttributeError: module 'pygame.time' has no attribute 'time'

这里有一个证据,证明我确实导入了时间和游戏:

代码语言:javascript
运行
复制
import sys, math, time
def save_score(name, size, mine):
    end = time.time()
~
from pygame import *

如果有人能解释如何避免/修复这个错误,我们将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-22 16:03:55

由于您的行,您遇到了命名空间冲突:

代码语言:javascript
运行
复制
from pygame import *

这会污染您的全局命名空间,因为您可以从pygame中导入所有内容。它使懒惰的生活变得容易--您不必引用特定的名称空间来使用pygame的函数。但它也有一些不好的后果。

在本例中,您已经将"time“作为全局命名空间中的一个模块导入。当你像从游戏中导入一样,它有一个叫做time的子模块。pygame.time替换您的常规时间模块。

解决这个问题的方法是正确地使用模块/命名空间。

这样做的一种方法是,不要使用from pygame import *,而是使用:

代码语言:javascript
运行
复制
import pygame

但是,你必须把游戏放在每个关于游戏函数或模块的引用前面。这通常是好的,这样您和任何阅读您的代码的人都会确切地知道您正在调用哪个函数。

您可以使用import ... as将其缩略一点。

代码语言:javascript
运行
复制
import pygame as pg

然后,您将不做像pygame.time这样的事情,而是执行pg.time

如果需要将某些特定内容放入全局命名空间,则可以执行以下操作:

代码语言:javascript
运行
复制
from pygame import foo

代码语言:javascript
运行
复制
from pygame import time as pygt

但是,如果您执行from pygame import timefrom pygame import *,游戏的时间将覆盖另一个时间模块。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40746173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档