python下划线:学习python艰苦的方式练习40

Jas*_*onB 2 python python-2.7

我试着在"学习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
Run Code Online (Sandbox Code Playgroud)

我不明白是什么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)(?)

如果有人能解释我上述两行,我真的很感激.谢谢你的时间.

unw*_*ind 8

这段代码:

cities['_find'] = find_city
Run Code Online (Sandbox Code Playgroud)

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

这段代码:

city_found = cities['_find'](cities, state)
Run Code Online (Sandbox Code Playgroud)

find_city通过首先使用_find密钥在字典中查找函数来调用该函数.

它可以改写为:

city_found = find_city(cities, state)
Run Code Online (Sandbox Code Playgroud)

这样做似乎没有任何实际意义,让字典(在代码中称为"地图")包含该find功能没有任何好处,我可以看到.