Python无法在函数中定义元组。

15

由于某些原因,在Python中每当我尝试在函数中定义元组时,我都会得到语法错误。例如,我有一个向程序添加向量的函数,它看起来像这样:

def add_vectors((angle_1, l_1),(angle_2, l_2)):
    x=math.sin(angle1)*l_1+math.sin(angle2)*l_2
    y=math.cos(angle1)*l_1+math.cos(angle2)*l_2

    angle=0.5*math.pi-math.atan2(y, x)
    length=math.hypot(x, y)
    return (angle, length)

看起来没问题,但是解释器说有语法错误,并且突出显示了第一个元组的第一个括号。我正在使用 Python 3.2.3。我做错了什么?


Python 3 不允许在函数参数列表中使用元组。 - BrenBarn
2个回答

23

在Python3中不再支持元组作为函数参数:http://www.python.org/dev/peps/pep-3113/

你可以在函数开始时解包元组:

def add_vectors(v1, v2):
    angle_1, l_1 = v1
    angle_2, l_2 = v2
    x=math.sin(angle1)*l_1+math.sin(angle2)*l_2
    y=math.cos(angle1)*l_1+math.cos(angle2)*l_2

    angle=0.5*math.pi-math.atan2(y, x)
    length=math.hypot(x, y)
    return (angle, length)

1

没有针对这种元组解包的语法。相反,将两个元组作为独立的参数传递,然后将它们解包为单独的参数。

def add_vectors(tup1, tup2):
    angle_1, l_1 = tup1
    angle_2, l_2 = tup2
    ...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接