python - 无法理解Python的那行代码

标签 python python-3.x flask

我是一个初学者,正在学习 flask 。在做练习时,我无法理解一些代码。谁能向我解释一下 for 循环的行?

@app.route("/details/<int:pet_id>")
def pet_details(pet_id):
    pet = next((pet for pet in pets if pet["id"] == pet_id), None) 
    if pet is None: 
        abort(404, description="No Pet was Found with the given ID")
    return render_template("details.html", pet = pet)

我无法理解代码中的这一行

    pet = next((pet for pet in pets if pet["id"] == pet_id), None)

最佳答案

next 从生成器获取下一个项目,在本例中为 (pet for pet in pets if pet["id"] == pet_id)。此生成器会将您的 pet 对象列表/集合减少为仅 id 与请求的 pet_id 相同的对象。

这里的 None 是默认值:如果生成器没有下一个元素,它通常会抛出 StopIteration 异常,但在这种情况下,next 将处理异常并返回一个 None 对象而不是抛出错误

关于python - 无法理解Python的那行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63798431/

相关文章:

python - 无法将 3d NumPy 数组 reshape 为 2d NumPy 数组

python - 将 YAML 多行值转换为折叠 block 标量样式?

python - 如何在基于 Django 类的 View 中访问当前用户

python - open() 中的整数文件描述符 "0"

python - Flask cli 无法导入使用 FLASK_APP 设置的应用程序

python - pandas - 将数组扩展到列

python - 函数的大小变化导致不同的答案

python - 任何加速 numpy.cumsum() 的方法

deployment - 成功部署了 Flask 应用程序,但在访问页面时出现 404

python - SQLAlchemy在Flask中的使用,Session管理实现