我试着做“艰难地学习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)
做了什么(?)在
如果有人能给我解释一下以上两句话,我将不胜感激。谢谢你的时间。在
cities['_find'] = find_city
将函数添加到字典中。city_found = cities['_find'](cities, state)
调用该函数(因为parentese和函数find_city
需要的两个参数)。在下划线并没有真正改变任何东西,它是键的一部分。通常,你用下划线作为前缀来表达一些东西,比如把它标记为内部的或者其他的。这本书应该在某个地方说明它的意思。在
此代码:
只需使用键
_find
将函数find_city
插入cities
字典。下划线没有特殊含义,它只是密钥字符串的一部分。可能是为了不与实际的城市名称相冲突。在此代码:
^{pr2}$调用
find_city
函数,首先使用_find
键在字典中查找它。在可以改写为:
这样做似乎没有任何真正的点,让字典(在代码中称为“map”)包含
find
函数没有任何好处,我可以看到。在正如您所说,
cities['_find'] = find_city
将函数添加到dict中。因此,cities['_find']
从字典中检索它。在foo(a,b)
使用参数a
和{foo
中的函数。cities['_find'](cities, state)
做的是完全相同的事情。在至于下划线,它只是在那里,这样它就不会与一个叫“find”的城市发生冲突,如果有的话。整个例子都是精心设计的,但重点似乎是教你函数只是对象。在
相关问题 更多 >
编程相关推荐