Python 强调:以艰难的方式学习 Python 练习 40.



我正在尝试做"学习Python"一书中的练习:106。示例如下:

cities = {'CA': 'San Francisco', 'MI': 'Detroit', 'FL': 'Jacksonville'}
cities['NY'] = 'New York'
cities['OR'] = 'Portland'
def find_city(themap, state):
    if state in themap:
        return themap[state]
    else:
        return "Not found."
# ok pay attention!
cities['_find'] = find_city
while True:
    print "State? (ENTER to quit)",
    state = raw_input("> ")
    if not state: break
    # this line is the most important ever! study!
    city_found = cities['_find'](cities, state)
    print city_found

我不明白cities['_find'] = find_city是做什么的?什么是_find?特别是,为什么下划线?同样,我不确定city_found = cities['_find'](cities, state)是做什么的。我看到过关于同一问题的类似帖子:学习 Python 的艰难方式练习 40 帮助

这基本上是说cities['_find'] = find_city将函数find_city添加到字典中,但我仍然不明白city_found = cities['_find'](cities, state)的作用(?

如果有人能向我解释上述两行,我将不胜感激。谢谢你的时间。

此代码:

cities['_find'] = find_city

只需使用键_find将函数find_city插入cities字典。下划线没有特殊的含义,它只是键字符串的一部分。可能选择不与实际城市名称冲突。

此代码:

city_found = cities['_find'](cities, state)

调用 find_city 函数,方法是首先使用 _find 键在字典中查找它。

它可以重写为:

city_found = find_city(cities, state)

这样做似乎没有任何真正的意义,让字典(在代码中称为"map")包含我可以看到的find函数没有任何好处。

正如您所说,cities['_find'] = find_city将函数添加到字典中。 因此,cities['_find']从字典中检索它。

foo(a,b)调用存储在foo中的函数,参数为 abcities['_find'](cities, state)同样的事情

至于下划线,它只是在那里,这样它就不会与一个名为"查找"的城市发生冲突,如果有的话。整个例子是高度人为的,但重点似乎是教你函数只是对象。

cities['_find'] = find_city

函数添加到字典中。 city_found = cities['_find'](cities, state)调用该函数(因为函数find_city需要括号和两个参数。

下划线并没有真正改变任何东西,它是键的一部分。通常,您使用下划线作为前缀来表达某些内容,例如将其标记为内部或其他内容。这本书应该在某处说明它的含义。

最新更新