2

我正在尝试通过 Learn Python the Hard Way 来学习 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

我不太明白Nonein 的作用是什么state = states.get('Texas', None)。如果它被用来告诉 Python “没有更多了”,那我为什么不能直接写state = states.get('Texas')呢?我在None这里需要什么额外的东西?谢谢!

4

2 回答 2

6

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

文档

获取(键[,默认值])

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

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

try:
    state = states['Texas']
except KeyError:
    state = None

因此,在这种情况下,您只需检查 ifstate不计算True为返回您也过滤掉的其他值,例如空字符串,这似乎不太可能)。

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

于 2012-09-27T23:39:33.737 回答
1

None如果在字典中找不到键,则不需要编写, 这是默认返回值。在这种情况下是多余的。

您可以替换它以返回其他内容Not found,例如。

于 2012-09-27T23:39:47.580 回答