我在运行脚本时遇到了麻烦,其中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任何帮助都会很感激
发布于 2020-03-02 14:50:47
在Python2.7中,print used to be a statement就像其他几个关键字,如break和continue一样,自2015年起就被废弃了,并正式达到了2020年1月1日的终止寿命。在新版本的Python3.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。但是升级会更好。
https://stackoverflow.com/questions/60480901
复制相似问题