为什么Python无法在函数中定义元组?

从Python 3.0开始,不再可能将解压缩的元组定义为函数中的参数(PEP 3113)。这意味着如果您尝试如下定义函数-

def fn(a,(b,c)):
   pass


Python解释器在元组的第一括号中显示语法错误。而是将元组对象定义为参数,然后在函数内部解压缩。在下面的代码中,将表示两个点的x和y坐标的两个元组对象作为参数传递,以计算两者之间的距离。在计算之前,将元组对象解压缩为各自的x和y坐标。

def hypot(p1,p2):
   x1,y1=p1
   x2,y2=p2
   import math
   hyp=math.sqrt((x1-x2)**2+(y1-y2)**2)
   return hyp

x=(10,10)
y=(20,20)
print ("hyp=",hypot(x,y))