这个"无"在Python中的.get()中做了什么?

use*_*278 2 python

我正在尝试通过学习Python的艰难方式来学习Python.我现在正在练习39并且有一个简单的问题.我试图在线搜索但找不到任何答案.这是练习中的代码:

# create a mapping of state to abbreviation
states = {
    'Oregon': 'OR',
    'Florida': 'FL',
    'California': 'CA',
    'New York': 'NY',
    'Michigan': 'MI'
}

# create a basic set of states and some cities in them
cities = {
    'CA': 'San Francisco',
    'MI': 'Detroit',
    'FL': 'Jacksonville'
}

print '-' * 10
# safely get a abbreviation by state that might not be there
state = states.get('Texas', None)

if not state:
    print "Sorry, no Texas."

# get a city with a default value
city = cities.get('TX', 'Does Not Exist')
print "The city for the state 'TX' is: %s" % city
Run Code Online (Sandbox Code Playgroud)

我不太明白None它的作用state = states.get('Texas', None).如果它被用来告诉Python"没有更多",那么为什么我不能写state = states.get('Texas')呢?我需要额外的None什么?谢谢!

Gar*_*tty 6

None是一个默认值,用于dict.get()告诉python如果密钥不存在则返回什么.在这种情况下,它有点多余,get()默认None为第二个参数.

来自文档:

get(key [,default])

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

所以它直接相当于states.get('Texas'):

try:
    state = states['Texas']
except KeyError:
    state = None
Run Code Online (Sandbox Code Playgroud)

因此,在这种情况下,你在哪里,然后简单地检查,如果state不计算为True,这是毫无意义的,它最好能够简单地做的try/except和执行例外您想要的动作(除非出于某种原因,你所得到返回你也过滤掉的其他值,例如空字符串,这似乎不太可能).

Python文档详细而且清晰,因此在您不知道参数是什么的情况下,请查看文档.