Python3如何定义二元组对为参数的函数?解决元组参数解包报错问题
报错原因
Python 3 已移除函数形参位置直接解包元组的语法,你之前写的def distance_points((x1, y1), (x2, y2))是Python 2支持的写法,在Python 3环境运行就会触发对应的报错。
修复方案
方案1:函数体内手动解包(最推荐,改动最小、可读性最高)
无需修改函数调用逻辑,仅调整函数内部实现即可,和你原始代码的预期逻辑完全一致:
def distance_points(p1, p2): x1, y1 = p1 x2, y2 = p2 dist = ((x1 - x2)**2 + (y1 - y2)**2)** 0.5 return dist print(distance_points((1.0, 1.0), (2.0, 1.0)))
运行后输出结果为1.0,符合预期。
方案2:直接通过索引访问元组元素(写法更简洁)
如果不需要单独命名坐标变量,可以直接通过下标访问元组的两个元素,省略解包步骤:
def distance_points(p1, p2): return ((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2)**0.5
内容的提问来源于stack exchange,提问作者Zhuānjiā
相关产品推荐
相关产品推荐

