gpt4 book ai didi

python - 如何在 Python 中控制函数的参数精度

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:29 25 4
gpt4 key购买 nike

我在 Python 中有这个函数:

def Rotate_Vector(vector, axis, direction):

其中vector是3个元素的元组(每个元素代表向量在笛卡尔轴上的三个坐标x,y,z),axis是坐标一个轴,direction 是一个表示顺时针或逆时针运动的整数。

我想在我的函数中控制输入参数是否正确:

  • vector 必须是 3 个整数的元组
  • axis 必须是 3 个整数的元组,可能的值应该是 -1, 0, 1
  • direction 必须是值为 +1 或 -1 的整数。

我想知道在一个函数中进行这些控制(元素的类型、值和数量)的正确方法。

编辑:

axis 可能有 6 种可能的情况:(1,0,0) (-1,0,0) (0,1,0) (0,-1,0) (0, 0,1) (0,0,-1)

最佳答案

简短的回答是:不要。 Python 是鸭子类型的,所以只做你需要做的,如果它不起作用,那么它就会出错。

比如你把vector限定为一个长度为3的元组,那么传入一个list的人呢?如果它做同样的工作,为什么他们传递的内容对您很重要?

如果你真的觉得你需要,那么做这样的事情:

if direction not in {1, -1}:
raise ValueError("direction must be +1 or -1")

if not len(vector) == 3:
raise ValueError("vector must contain 3 values")

等...

但是,这违反了 Python 的请求原谅,而不是许可的原则。

我还要指出,这里更好的选择是避免使用魔数(Magic Number)。例如,添加 Vector.FORWARD = +1Vector.BACKWARD = -1,然后告诉人们将它们传递给方向。这仍然提供了灵 active ,但为人们提供了关于使用什么作为方向的指导。同样,您可以提供 namedtuples为载体在构建它们时提供指导。

还值得注意的是 PEP-8建议函数名称使用 lowercase_with_underscores,因此 Rotate_Vector() 不是一个特别好的函数名称,除非您被项目中的现有约定所强制。

关于python - 如何在 Python 中控制函数的参数精度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10049596/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com