Python dict pop method
一直以为Python里面字典的pop只能有一个参数,今天写Flask的时候发现写注销操作的时候竟然有session.pop('logged_in', None)
,这样的方式,如下。
@app.route('/logout')
def logout():
session.pop('logged_in', None)
flash('You were logged out')
return redirect(url_for('show_entries'))
翻了翻Python的文档,还真的找到了这种用法。
https://docs.python.org/2/library/stdtypes.html?highlight=pop#dict.pop
文档中写道:
pop(key[, default])
If key is in the dictionary, remove it and return its value, else return default. If default is not given and key is > not in the dictionary, a KeyError is raised.New in version 2.3.
也就是说,如果pop一个不存在的键的时候,只有一个参数会抛出一个KeyError,而指定了第二个参数None之后,即便尝试pop一个不存在的键,也不会有异常,仅仅是什么都不做。就像下面这样:
>>> dd = {}
>>> dd['a'] = 1
>>> dd
{'a': 1}
>>> dd['b'] = 2
>>> dd.pop('c')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'c'
>>> dd.pop('c',None)
>>>