Python:编写有效的条件检查

问题描述

我只是想知道以下两种方法之间哪种更有效的编写python的方式(也可以改进吗?):

方法1:

for hit in hits:
    version_history = (
        get_version_history(args..)
        if request.get(SHOW_FLAG,True)
        else None
    )
    response.append(format_response(hit,version_history))

方法2:

if request.get(SHOW_FLAG,True):
    for hit in hits:
        version_history = get_version_history(args..)
        response.append(format_response(hit,version_history))
else:
    for hit in hits:
        version_history = None
        response.append(format_response(hit,version_history))

解决方法

我愿意

response = [format_response(hit,get_version_history(args...) if request.get(SHOW_FLAG,True) else None) for hit in hits]

尽管您建议的方法之间没有明显区别,但前者可能更易于维护。