在调用一组精灵函数的两种方法中的差异



在pygame中,我遇到了两种不同的方式来调用精灵组中所有精灵的函数:

1)example_group.update()

2)for sprite_loop in example_group: sprite_loop.update()

除非我误会了,否则他们都完成了同样的事情。

两种方法之间是否存在显着差异?一个更好的表现吗?我认为第一种方法会更快,但是我阅读的大多数示例代码都使用了第二种方法。

这是一些代码,可以将其放在上下文中:

import pygame
class Test(pygame.sprite.Sprite):
     def __init__(self):
          super(Test, self).__init__()
          self.x = 0
          example_group.add(self)
     def update(self):
          self.x += 1
          if self.x == 1:
               print self.x
example_group = pygame.sprite.Group()
sprite1 = Test()
sprite2 = Test()
sprite3 = Test()
while True:
     #THIS IS WHERE MY QUESTION IS
     #DO I USE:
     example_group.update()
     #OR SHOULD I USE:
     for sprite_loop in example_group:
          sprite_loop.update()

它们确实相同。组更新功能调用Sprite更新。两者都应等效地表现。无论您打电话是哪个是您的首选。

您可以比较它们的文档

sprite.update

group.update

如果您不想在某些条件下更新所有精灵,则使用for循环

最新更新