1

我在 Google Map API 网站上查看此代码:

import simplejson, urllib
GEOCODE_BASE_URL = 'http://maps.googleapis.com/maps/api/geocode/json'

def geocode(address,sensor, **geo_args):
    geo_args.update({
        'address': address,
        'sensor': sensor  
    })

    url = GEOCODE_BASE_URL + '?' + urllib.urlencode(geo_args)
    result = simplejson.load(urllib.urlopen(url))

    print simplejson.dumps([s['formatted_address'] for s in result['results']], indent=2)

if __name__ == '__main__':
    geocode(address="San+Francisco",sensor="false")

我注意到在 geocode 函数中,当我们实际应用该函数时,我们在调用该函数时不使用 geo_args 字典,而是使用它来初始化我们在下一行中更新的字典。与在函数本身中初始化字典相比,使用它有什么好处?它使代码不太清楚,所以我认为这样做是有原因的。

4

2 回答 2

0

geo_args用来。字面词典

{
    'address': address,
    'sensor': sensor  
}

更新geo_args,而不是相反。

address像这样的原因在我看来sensor是必需的参数。这种结构允许函数强制执行该要求,并允许它们按位置传递。.update()只是将所有参数合并为一个,以便可以将它们提供给urllib.urlencode.

于 2013-01-02T02:35:59.937 回答
0

不清楚?这是 **kwargs(关键字参数字典)的正常行为。因此,当您看到带有的内容时**,将传递一堆命名参数或关键字参数。

看到其他答案。我可能误解了你的问题。我同意其他答案:地址和传感器是必需的。

于 2013-01-02T02:36:15.843 回答