Session.pop方法的第二个参数在Python Flask中有什么作用?

Tak*_*son 13 python session flask

我正在完成Flask教程,并且只想澄清会话对象的.pop属性到底是什么以及为什么它会采用'None'参数.

@app.route('/logout')
def logout():
    session.pop('logged_in', None)
    flash('You were logged out')
    return redirect(url_for('show_entries'))
Run Code Online (Sandbox Code Playgroud)

Vik*_*ran 17

根据Flask的API,他们的Session类是python的包装器Dict.按照Python文档dict.pop():

pop(key[, default])

如果key在字典中,删除它并返回其值,否则返回default.如果default没有给出并且key不在字典中,KeyError则引发a.

在这种情况下,教程会要求您传入值None作为default值.

  • 因此,在教程中传递默认值可以防止在未登录的人访问 `/logout` 时引发 `KeyError` 异常(然后会话中将不存在密钥 `logged_in`)。 (2认同)