-5

zed Shaw の本「learning python the hard way」を読んでいます。申し訳ありませんが、私はコーディングの初心者であり、これを理解するのに苦労しています. 州に入って返される都市をfind_city関数がどのように見つけるかがわかりません。「わかりました注意してください」と「 # この行はこれまでで最も重要です! 勉強してください! の行は、私を混乱させるものです.

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
4

1 に答える 1

2

簡単に言うと:

  • cities辞書としてインスタンス化され、いくつかのキー/値がここに挿入されます。CA -> San Francisco、MI -> Detroit などでは、キーと値の両方が文字列です。

  • という名前の関数find_cityが定義され、2 つの入力パラメーター (themapおよびstate) を取ります。

  • ディクショナリにcities別のキー/値が追加されます。ここで、キーは文字列 '_find' ですが、今回は、値は関数 find_city であり、以前の文字列ではありません。

  • キー「_find」に関連付けられた値、つまり関数をcity_found = cities['_find'](cities, state)辞書に要求する行で。次に、辞書自体を最初のパラメーターとして、stdin によって読み取られた「状態」を 2 番目のパラメーターとして、この関数が呼び出されます。citiesfind_city

次のように書いても同じでした。

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

HTH

于 2012-05-11T14:04:47.360 に答える