2012-05-11 48 views
-5

我正在閱讀zed shaw的書「學習python的困難之路」。原諒我,但我是一個編程新手,我很難理解這一點。我似乎無法看到find_city函數如何通過輸入狀態來找出要返回的城市。 !與「好講究」和」#這條線是最重要的有史以來行研究是那些困惑我PYTHON代碼從一本書的教訓

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 
+3

*什麼特別*你懂不?更新你的問題來解釋。 –

+0

正如@ChrisMorgan所說,你應該編輯你的問題,說明你想要解釋的具體部分,因爲人們不知道該假設什麼。 – jamylak

+0

@ChrisMorgan我已經意識到並編輯它:D – jamylak

回答

2

簡單地說:

  • cities被實例化的字典,和一些鍵/值此處插入兩個鍵和值字符串CA - >舊金山,MI - >底特律,等等等等

  • 定義了一個名爲find_city功能,它需要兩個輸入參數(themapstate);

  • cities字典中增加了另一個鍵/值,其中key是字符串'_find',但是這次的值是函數find_city而不是像以前那樣的字符串;

  • 在行city_found = cities['_find'](cities, state)你要求字典cities與關鍵字'_find'關聯的值,即函數find_city。然後,這個函數被稱爲字典本身作爲第一個參數,而由stdin讀取的'state'作爲第二個參數。

這本來是相同的,如果它被寫爲:

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

HTH

+0

謝謝西蒙!它已經清除了,但原始輸入被置於變量狀態嗎?我沒有看到它在別處被使用? –

+0

是的,'state'包含一個字符串,它是stdin的原始輸入。 – Simone

+0

但我沒有看到它在其他功能中使用:( –