我目前正在使用pygame编写一个小脚本,但我不相信这个问题与pygame严格相关。
我有一个类,它包含元组中包含的函数参数字典:
self.stim = {1:(firstParam, secondparam, thirdparam),
2:(firstParam2, secondparam2, thirdparam2),
3:(firstParam3, secondParam3, thirdParam3)}
在同一个类中,我有一个函数,它使用以下参数发出对另一个函数的调用:
def action(self, stimType):
pygame.draw.rect(self.stim[stimType][0], self.stim[stimType][1], self.stim[stimType][2])
它有效,但阅读起来有点难看。我想知道是否有更优雅的方式存储这些参数,以便可以使用它们调用函数?
谢谢!
答案 0 :(得分:12)
当然,它被称为argument list unpacking(感谢BjörnPollex的链接):
def action(self, stimType):
pygame.draw.rect(*self.stim[stimType])
如果你没有出于任何特殊原因使用dict,那么收集不同参数的元组更适合并且更具代表性:
self.stim = (
(firstParam, secondparam, thirdparam),
(firstParam2, secondparam2, thirdparam2),
(firstParam3, secondParam3, thirdParam3)
)
请记住索引现在从0开始:self.stim[stimType]
变为self.stim[stimType-1]