python - Python 2 函数到 Python 3 的转换
问题描述
我从一个旧项目中获得了以下功能并收到此错误
def hasrsine_distance((lat1, lon1), (lat2, lon2)): ^ SyntaxError: invalid syntax
def haversine_distance((lat1, lon1), (lat2, lon2)):
"""
Haversine distance between two points, given by lon and lat in degrees.
"""
d_lat = radians(lat2 - lat1)
d_lon = radians(lon2 - lon1)
a = sin(d_lat / 2.0) ** 2 + \
cos(radians(lat1)) * cos(radians(lat2)) * \
sin(d_lon / 2.0) ** 2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
return R * c
我很想知道将其转换为 python 3.8 最佳实践。帮助
解决方案
haversine_distance(p1, p2)
像在 Python3 中一样定义你的函数,并在函数体中解压缩 lat, lon。例如:
def haversine_distance(p1, p2):
"""
Haversine distance between two points, given by lon and lat in degrees.
"""
lat1, lon1 = p1
lat2, lon2 = p2
d_lat = radians(lat2 - lat1)
d_lon = radians(lon2 - lon1)
a = sin(d_lat / 2.0) ** 2 + \
cos(radians(lat1)) * cos(radians(lat2)) * \
sin(d_lon / 2.0) ** 2
c = 2 * atan2(sqrt(a), sqrt(1 - a))
return R * c
推荐阅读
- javascript - 如何使可拖动的可排序列表在拖动时显示其他内容?
- pandas - 熊猫数据框到 coo 矩阵和 lil matix
- html - 基于网络的 Gmail 显示连续的空白但不打印
- java - Eclipse Formatter - 忽略 if 条件中的内容
- html - 按钮与文本区域不在同一行
- scala - 如何在数据块中展开数据框模式
- ios - 未从自定义 URL 调用 iOS AppDelegate
- flutter - Flutter - 如何使用 BloC 实现下拉列表?
- javascript - 在Javascript中单击运算符(+ - ..)后如何存储每个值
- processing - 迫使球体旋转