为一组精灵调用函数的两种方法的区别
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()
他们确实达到了同样的效果。组更新函数调用精灵更新。两者都应该具有同等的性能。随叫随到。
您可以比较它们的文档
如果您不想在特定条件下更新所有精灵,您可以使用 for 循环
在 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()
他们确实达到了同样的效果。组更新函数调用精灵更新。两者都应该具有同等的性能。随叫随到。
您可以比较它们的文档
如果您不想在特定条件下更新所有精灵,您可以使用 for 循环