Pylint 显示函数中的所有 return 语句都应该 return 表达式错误

Pylint is showing error all return statements in a function should return an expression

我有3个功能。 invalid_response,valid_response,lambda_handler

下面是代码

def invalid_response():
    response = {
        'statusCode': 404,
        'body': json.dumps("NA")
    }
    return response

def valid_response(response):
    response = {
        'statusCode': 200,
        'body': json.dumps(response)
    }
    return response
def lambda_handler(event, context):
    
        event_value = event['multiValueQueryStringParameters']
        if event_value == '' or event_value is None:
            aresponse = invalid_response()
            return aresponse
        if event_value is not None or \
                event_value['q'][0] is not None:
            event_value_new = event['multiValueQueryStringParameters']['q'][0]
            response = read_s3(event_value_new)
            if response:
                resp = valid_response(response)
            else:
                resp = invalid_response()
            return resp
  

pylint 很生气,因为您有可能在没有 returning 任何东西的情况下到达函数的末尾,而您 returning 带有条件的值。 Pylint 不喜欢这样,因为它可能导致代码更容易引入错误和崩溃,因为无法处理重新设置的 None 值。

最简洁的响应是在函数末尾添加一些默认响应,以便所有执行分支 return 具有相同类型的值。

def lambda_handler(event, context):
    
        event_value = event['multiValueQueryStringParameters']
        if event_value == '' or event_value is None:
            aresponse = invalid_response()
            return aresponse
        if event_value is not None or \
                event_value['q'][0] is not None:
            event_value_new = event['multiValueQueryStringParameters']['q'][0]
            response = read_s3(event_value_new)
            if response:
                resp = valid_response(response)
            else:
                resp = invalid_response()
            return resp

        # it is logically possible to reach this block
        return invalid_response()