这一定是非常基本和明显的东西,因为我无法通过谷歌或在这里找到答案......
当我调用方法时,Python 中的括号有什么区别?
带有 pygame 和括号的示例代码:
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((640, 480))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
pygame.display.update()
当我单击窗口的十字时,它会关闭,sys.exit() 是回溯中调用的最后一个。
当我把它改成这样时:
import pygame
import sys
pygame.init()
screen = pygame.display.set_mode((640, 480))
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit
pygame.display.update()
它仍然退出,但在回溯中的最后一项显示错误。
当我在这里学习 Panda3D 教程时,我遇到了这个问题:http://www.mygamefast.com/volume1/
在几个问题中(例如,在“ArcadeFlightGame”类的“keyboardSetup”方法中:http://www.mygamefast.com/volume1/issue5/4/)他调用“sys.exit”而不是“sys.exit()”,游戏正确终止。如果我将其更改为“sys.exit()”,则会在启动时导致一些错误。
这似乎非常基本,以至于没有人在任何地方真正解释它......如果有人能在这方面启发我一点,我将非常感激:/
如果不使用括号,则不会调用该函数。就是这么简单。sys.exit
绝对什么也不做,sys.exit()
调用该函数。
话虽这么说,有时不带括号的函数名称将被传递给其他函数,或绑定到事件。在这种情况下,不使用括号,因为您告诉其他函数或事件“在适当的时间调用它”。
例如,在您链接到的教程中是这行代码:
self.accept("escape", sys.exit)
This is not调用 sys.exit。相反,它告诉事件系统“当您检测到退出键时,调用此函数”。调用此代码时,sys.exit
is not称为,而是挂号的稍后再打电话。当按下转义键时,底层框架实际上会使用括号调用该函数。
因此,立即调用函数(使用()
) and 注册一个函数(仅使用名称,不()
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)