如何根据 PEP8 缩短 lambda 函数?

How shorten lambda function according to PEP8?

我想缩短功能,但不知道该怎么做。

字符串太长。如何修复此代码?

def get_closest_bar(data, user_latitude, user_longitude):
    return min(
        data['features'],
        key=lambda x: sqrt((x['geometry']['coordinates'][1] - user_latitude)**2 + (x['geometry']['coordinates'][0] - user_longitude)**2))

这是一种可能性:

def get_closest_bar(data, user_latitude, user_longitude):
    return min(
        data['features'],
        key=lambda x: sqrt(
            (x['geometry']['coordinates'][1] - user_latitude) ** 2 + 
            (x['geometry']['coordinates'][0] - user_longitude) ** 2))

我使用 PyCharm 作为我的 IDE。我只在上面的自动重新格式化中添加了一件事 PyCharm 为我做的。

使用方括号 () 表示多行 lambda。这是不鼓励的,你应该有一个函数来替换 lambda。

# USE

def get_closest_bar(data, user_latitude, user_longitude):
    def key(x):
        return (
            sqrt((x['geometry']['coordinates'][1] - user_latitude)**2 + 
            (x['geometry']['coordinates'][0] - user_longitude)**2)
        )
    return min(data['features'], key=key)

# INSTEAD OF 

def get_closest_bar(data, user_latitude, user_longitude):
    key = lambda x: (
        sqrt((x['geometry']['coordinates'][1] - user_latitude)**2 + 
        (x['geometry']['coordinates'][0] - user_longitude)**2)
    )
    return min(data['features'], key=key)