2012-05-11 3 views
-5

나는 zed shaw의 저서 "learning python the hard way"를 읽고있다. 용서해주세요.하지만 저는 코딩의 초보자입니다. 그리고 이것을 이해하는 데 어려움을 겪고 있습니다. 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가 사전으로 인스턴스화, > 샌프란시스코, MI - -> 디트로이트, 등 등,이 두 개의 입력 매개 변수를 find_city라는 함수가 정의

  • (themap. 일부 키/값은 둘 다 키 여기에 삽입되며 값은 CA에 대한 문자열입니다 및 state);

  • ~ cities 사전에 다른 키/값이 추가됩니다 (여기서 key는 '_find'문자열이지만 이번에는 값이 find_city 함수이며 이전과 같은 문자열은 아닙니다).

  • 라인의 city_found = cities['_find'](cities, state)cities 키 '_find'와 연결된 값인 find_city을 사전에 문의하십시오. 그런 다음이 함수는 사전 자체를 첫 번째 매개 변수로 사용하고 'state'를 두 번째 매개 변수로 stdin에서 읽습니다.

가로 작성된 경우이 같은했을

:

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

HTH

+0

시몬 감사합니다! 이미 삭제되었지만 원시 입력은 변수 상태 오른쪽에 배치됩니까? 나는 다른 곳에 사용되는 것을 보지 못합니까? –

+0

예, 'state'에는 stdin의 원시 입력 문자열이 들어 있습니다. – Simone

+0

하지만 다른 함수에서 사용되는 것을 보지 못합니다 : ( –