Kivy / Python - 使用3个参数调用函数而不给出任何参数

时间:2014-11-20 09:16:08

标签: function arguments kivy

所以这里有一本关于Kivy的书的代码。当搜索'按下按钮调用search_location函数。在其UrlRequest中,调用了没有任何参数的found_location函数。但是found_location有两个参数,所以它怎么工作呢?请求在哪里'? Shoudn在UrlRequest中的调用看起来更像是:self.found_location(某事,某事)?

class AddLocationForm(BoxLayout):
    search_input = ObjectProperty()
    search_results = ObjectProperty()
    def search_location(self):
        search_template = "http://api.openweathermap.org/data/2.5/" + "find?q={}&type=like"
        search_url = search_template.format(self.search_input.text)
        request = UrlRequest(search_url, self.found_location)
    def found_location(self, request, data):
        data = json.loads(data.decode()) if not isinstance(data, dict) else data
        cities = ["{} ({})".format(d['name'], d['sys']['country']) for d in data['list']]
        self.search_results.item_strings = cities

如果您还可以解释哪些数据[' list']会很棒。当我查看search_url链接时,没有'列表'内部。

1 个答案:

答案 0 :(得分:2)

UrlRequest(search_url, self.found_location)

这会传递UrlRequest两个参数,第二个参数是函数本身。 UrlRequest使用两个参数自动调用该函数,特别是它本身和它已检索的数据。

  

Shoudn在UrlRequest中的调用看起来更像:self.found_location(某事,某事)

没有。关键是你不想想要调用该函数,只是将函数本身传递给UrlRequest,以便稍后调用它。