1

Google Map API Web サイトでこのコードを見ていました。

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")

ジオコード関数では、関数を実際に適用するときに、関数を呼び出すときに geo_args 辞書を使用しないことに気付きましたが、代わりにそれを使用して、次の行で更新する辞書を初期化します。関数自体の中で辞書を初期化するのではなく、これを使用する利点は何ですか? コードが少しわかりにくくなるので、それを行う理由があると思います。

4

2 に答える 2

0

geo_args使用されている。リテラル辞書

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

更新geo_args、その逆ではありません。

このように見える理由addresssensor、必要な引数です。この構造により、関数はその要件を強制することができ、位置的に渡すこともできます。は.update()、すべての引数を 1 つに統合して、 に渡せるようにするためのものurllib.urlencodeです。

于 2013-01-02T02:35:59.937 に答える
0

明確ではありません?これは **kwargs (キーワード引数辞書) の通常の動作です。したがって、 を含むものを見ると**、一連の名前付きパラメーターまたはキーワード引数が渡されます。

他の回答を見る。私はおそらくあなたの質問を誤解しました。他の回答に同意します。アドレスとセンサーが必要です。

于 2013-01-02T02:36:15.843 に答える