【问题标题】:Python - invalid syntax for event loop (maze_run-master)Python - 事件循环的无效语法(maze_run-master)
【发布时间】:2020-03-01 23:50:58
【问题描述】:

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

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)

我收到语法错误:

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

任何帮助将不胜感激?????????

【问题讨论】:

  • 从概念上讲,您所做的是this,但正如该问题所示,它应该可以工作。但在 Python 2.7 中,print(著名!)不是函数。有升级的机会吗?如果没有,您需要添加一个包装函数来执行您的print
  • Python-2.7 已停产。请升级

标签: python python-2.7 pygame


【解决方案1】:

在 Python 2.7(自 2015 年起已弃用,并已于 2020 年 1 月 1 日正式终止生命周期)中,print used to be a statement,就像其他几个关键字一样,例如 breakcontinue。在 Python 3.0 以后的较新版本中,print is a function,这就是为什么您可能会看到使用 print 本身的回调示例。

因此,您会收到 SyntaxError,因为您将现代构造(2015 年后 v.3)应用于旧的且正式过时的 Python 版本。

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

def my_print (text):
  print text

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

event_loop(my_print)

用原始行替换最后一行

event_loop(print)

将再次显示 SyntaxError。不过最好升级一下。

【讨论】:

  • 谢谢你,伙计!我在 python3 上安装了 pygame。它解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-03-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-29
相关资源
最近更新 更多