所以我正在使用pygame学习python,我遇到了以下问题:
我正在尝试创建一个重力矢量(angle, length)
,就像这样:
gravity = pygame.math.Vector2(math.pi, 0.01)
我也试过:
gravity = (math.pi, 0.01)
但是,当我试图在代码中使用重力变量时,我会收到错误,说我没有传递足够的参数,就好像它将重力变量视为一个值一样。
当我分解它时,例如通过这样做:
... , gravity[0], gravity[1], ...
它工作得很好。
下面是一个我想与向量一起使用的示例函数(它以4个浮点值作为参数(:
(self.angle, self.speed) = add_vectors(self.angle, self.speed, gravity[0], gravity[1])
(这个有效(
(self.angle, self.speed) = add_vectors(self.angle, self.speed, gravity)
(这个不起作用(
是什么原因造成的?我启动矢量是错误的吗?或者我必须继续使用gravity[0]
来打开它吗?
您可以使用星号(*
(运算符来解压缩pygame.math.Vector2
对象:
(self.angle, self.speed) = add_vectors(self.angle, self.speed, gravity)
(self.angle, self.speed) = add_vectors(self.angle, self.speed, *gravity)
重力变量是一个元组,它只是一个对象。您的方法期望有4个参数,但在后一个示例中传递了3个参数。您可以使用参数拆包/销毁。
add_vectors(self.angle, self.speed, *gravity)
点击此处查看有关开箱的更多信息:https://www.geeksforgeeks.org/packing-and-unpacking-arguments-in-python/