如何在python中启动和解包向量?

如何在python中启动和解包向量?,python,vector,pygame,Python,Vector,Pygame,因此,我正在使用pygame学习python,我遇到了以下问题: 我试图创建重力向量(角度、长度),如下所示: gravity=pygame.math.Vector2(math.pi,0.01) 我也试过: 重力=(math.pi,0.01) 但是当我试图在代码中使用重力变量时,我得到了错误,说我没有传递足够的参数,就好像它将重力变量视为单个值一样 当我将其分解时,例如: ,重力[0],重力[1],… 它很好用 下面是一个示例函数,我想与向量一起使用(它使用4个浮点值作为参数): (这个有效)

因此,我正在使用pygame学习python,我遇到了以下问题:

我试图创建重力向量
(角度、长度)
,如下所示:

gravity=pygame.math.Vector2(math.pi,0.01)

我也试过:

重力=(math.pi,0.01)

但是当我试图在代码中使用重力变量时,我得到了错误,说我没有传递足够的参数,就好像它将重力变量视为单个值一样

当我将其分解时,例如:

,重力[0],重力[1],…

它很好用

下面是一个示例函数,我想与向量一起使用(它使用4个浮点值作为参数):

(这个有效)

(这个不行)


这是什么原因造成的?我是否启动了错误的向量,或者我必须使用
重力[0]
继续解压它?

重力变量是一个元组,它只是一个对象。您的方法预期有4个参数,但在后一个示例中传递了3个参数。您可以使用参数解包/销毁

add_vectors(self.angle, self.speed, *gravity)

有关解包的更多信息,请参见此处:

重力变量是一个元组,它只是一个对象。您的方法预期有4个参数,但在后一个示例中传递了3个参数。您可以使用参数解包/销毁

add_vectors(self.angle, self.speed, *gravity)
有关解包的详细信息,请参见此处:

您可以使用星号(
*
)运算符解包对象:

(self.angle,self.speed)=添加向量(self.angle,self.speed,gravity)

(self.angle,self.speed)=添加向量(self.angle,self.speed,*重力)
您可以使用星号(
*
)操作符来解压缩对象:

(self.angle,self.speed)=添加向量(self.angle,self.speed,gravity)

(self.angle,self.speed)=添加向量(self.angle,self.speed,*重力)

尝试添加向量(self.angle,self.speed,*重力)我添加了一个
*
谢谢,效果不错!你能再告诉我一点为什么它能与*一起工作吗?
*
是解包操作员。您经常会发现,函数使用的参数数量可变且参数名称可变,请参见
def my_func(这些变量是必需的,*argsIsOptional,**kwargsAndSoIsThis)
*
解压数组
**
打开字典。尝试添加向量(self.angle,self.speed,*gravity)我添加了一个
*
谢谢,效果不错!你能再告诉我一点为什么它能与*一起工作吗?
*
是解包操作员。您经常会发现,函数使用的参数数量可变且参数名称可变,请参见
def my_func(这些变量是必需的,*argsIsOptional,**kwargsAndSoIsThis)
*
解压数组<代码>**打开字典。
add_vectors(self.angle, self.speed, *gravity)