get和[]之间的区别

时间:2012-12-18 17:12:14

标签: python

Django的新手,有人可以解释

之间的区别
username=form.cleaned_data['username']

VS

username=form.cleaned_data.get('username')

3 个答案:

答案 0 :(得分:4)

form.cleaned_data是一本字典。如果您尝试直接通过这样的字典访问密钥,如果找不到密钥,则会引发错误。

>>> ex_dict = {}
>>> ex_dict = {'x':1, 'y':2}
>>> ex_dict['z']

Traceback (most recent call last):
  File "<console>", line 1, in <module>
KeyError: 'z'

然而,如果您对字典使用get,它将返回None而不是错误,或者如果找不到密钥,您可以指定预期的返回值。

>>> ex_dict.get('z')
>>> ex_dict.get('z', 1)
1

答案 1 :(得分:3)

如果找不到KeyError密钥,则会引发username

form.cleaned_data['username']

但如果找不到密钥,则会返回None(默认情况下),不会引发KeyError异常。

form.cleaned_data.get('username')

如果找不到密钥,您可以选择更改默认返回值(如果使用.get)。

val = form.cleaned_data.get('username', False)
# assume key was not found
print val # should contains False now

答案 2 :(得分:2)

来自the docs

  

get密钥 [,默认])

     

如果 key 在字典中,则返回的值,否则默认。如果未给出默认,则默认为None,因此此方法永远不会引发KeyError