为一组精灵调用函数的两种方法的区别

Difference in two methods for calling a function for a group of sprites

在 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.update

Group.update

如果您不想在特定条件下更新所有精灵,您可以使用 for 循环