PYTHON代码与一本书的教训

时间:2012-05-11 13:54:57

标签: python python-2.7

我正在阅读zed shaw的书“艰难地学习python”。原谅我,但我是编码的新手,我很难理解这一点。我似乎无法看到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

1 个答案:

答案 0 :(得分:2)

简要说明:

  • cities被实例化为字典,并在此插入一些键/值。键和值都是CA的字符串 - >旧金山,密歇根州 - >底特律等等。

  • 定义了一个名为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