首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -事件循环的无效语法(maze_run-master)

Python -事件循环的无效语法(maze_run-master)
EN

Stack Overflow用户
提问于 2020-03-01 23:50:58
回答 1查看 98关注 0票数 1

我在运行脚本时遇到了麻烦,其中print是事件循环的回调函数

代码语言:javascript
复制
from pygame.locals import KEYDOWN
import pygame


def event_loop(handle_key, delay=10):
        """Processes events and updates callbacks."""
        while True:
            pygame.event.pump()
            event = pygame.event.poll()
            if event.type == KEYDOWN:
                handle_key(event.key)
            pygame.time.delay(delay)


if __name__ == '__main__':
        pygame.init()
        pygame.display.set_mode((640, 400))
        event_loop(print)

我得到语法错误:

代码语言:javascript
复制
event_loop(print)
               ^
 SyntaxError: invalid syntax
Wirman:04_scientific_method mac$ python event_loop.py
 File "event_loop.py", line 23
   event_loop(print)
                  ^
SyntaxError: invalid syntax

任何帮助都会很感激

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-02 14:50:47

在Python2.7中,print used to be a statement就像其他几个关键字,如breakcontinue一样,自2015年起就被废弃了,并正式达到了2020年1月1日的终止寿命。在新版本的Python3.0中,print is a function,这就是为什么您可能会看到使用print本身的回调示例。

因此,您可以获得一个SyntaxError,因为您正在将一个现代的构造(2015年后的v.3)应用于一个旧的、正式过时的Python版本。

如果您想继续使用2.7,可以通过只为print语句创建包装器函数来绕过它:

代码语言:javascript
复制
def my_print (text):
  print text

def event_loop (handle_key):
  handle_key('hello!')

event_loop(my_print)

将最后一行替换为原来的行

代码语言:javascript
复制
event_loop(print)

将再次显示SyntaxError。但是升级会更好。

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

https://stackoverflow.com/questions/60480901

复制
相关文章

相似问题

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