如何在python中初始化和解压向量



所以我正在使用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/

最新更新