python强调:学习python的艰难之路练习40

2024-06-11 18:27:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试着做“艰难地学习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)是做什么的。我在同一个问题上也看到过类似的帖子: learn python the hard way exercise 40 help

基本上是说cities['_find'] = find_city在字典中添加了函数find_city,但是我仍然不明白city_found = cities['_find'](cities, state)做了什么(?)在

如果有人能给我解释一下以上两句话,我将不胜感激。谢谢你的时间。在


Tags: the示例cityreturniffindcastate
3条回答

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

下划线并没有真正改变任何东西,它是键的一部分。通常,你用下划线作为前缀来表达一些东西,比如把它标记为内部的或者其他的。这本书应该在某个地方说明它的意思。在

此代码:

cities['_find'] = find_city

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

此代码:

^{pr2}$

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

可以改写为:

city_found = find_city(cities, state)

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

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

foo(a,b)使用参数a和{}调用存储在foo中的函数。cities['_find'](cities, state)做的是完全相同的事情。在

至于下划线,它只是在那里,这样它就不会与一个叫“find”的城市发生冲突,如果有的话。整个例子都是精心设计的,但重点似乎是教你函数只是对象。在

相关问题 更多 >