首页 > 解决方案 > 将参数传递给 URL 对象

问题描述

使用 kivy 中的 URL 对象https://kivy.org/doc/stable/api-kivy.network.urlrequest.html,如果我想更改 on_success 函数以接收另一个参数,我将如何将值传递给它?

def generate_images(sensor_id):
    req = UrlRequest(URL, on_success=url_success)

然后在 on_success 有这样的东西

def url_success(req, result, sensor_id):

标签: pythonkivykivy-language

解决方案


一种解决方案是使用functools.partial()

from functools import partial

# ...

def generate_images(sensor_id):
    req = UrlRequest(URL, on_success=partial(url_success, sensor_id))

# ...

def url_success(sensor_id, req, result):
    print(sensor_id, req, result)

另一种解决方案是使用lambda函数:

def generate_images(sensor_id):
    req = UrlRequest(URL, on_success= lambda req, result, sensor_id=sensor_id : url_success(req, result, sensor_id))

推荐阅读