2011-03-25 103 views
2

嘿傢伙我有麻煩理解這一點,我沒有得到時,該地圖是真正參考城市字典。或最後一行,什麼是(城市,州)部分?學習python硬的方法練習40幫助

謝謝。

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 

回答

9

cities['_find']正好是find_city。所以cities['_find'](cities, state)find_city(cities, state)相同。

的原因我的第一個說法是這一行:

cities['_find'] = find_city 

那不叫find_city,它堅持函數本身在詞典中。 Python函數只是列表和類實例之類的對象。如果你不在後面加括號,可以將它們分配給變量。

+0

@nmichaels我得到的感謝。但爲什麼它是城市['_ find'] = find_city而不是城市['_ find'] = find_city() – neil 2011-03-25 15:48:08

+0

@nmicheals +1但是也許您應該添加更多信息... – Ant 2011-03-25 15:49:13

+0

@nmicheals如果我理解正確, '說'功能'find_city'在'_find'鍵的'cities'地圖中?「 – corsiKa 2011-03-25 15:49:35