如何在Python中向回调函数传递参数?

问题描述 投票:0回答:1

我想让我的代码对于 HTTP 调用异步,因为整个程序在调用时停止。

我查看了 grequests,但无法弄清楚,asyncio 也是如此

这是代码的当前同步版本:

myvar1 = class_object()

response = requests.get(myvar1.url)

if response.status_code == 200:
    myvar1.accept()

我想改为执行以下操作:

def myfunction:

    request.get(myvar1.url,callbackfunction(response,myvar1))

    return None

def callbackfunction(response,myvar1):

    if response.status_code == 200:
        myvar1.accept()

我可以成功地将回调函数传递给请求,问题是如何将参数传递给该回调。

基本上,目标是执行回调函数传递的参数的方法。

python function http callback
1个回答
4
投票

让我们制作一个部分函数:


def myfunction(var, func):

    request.get(var.url, callback =  func)


def callbackfunction(response, var):

    if response.status_code == 200:
        var.accept()

# Now make a partial function to wrap callbackfunction
def wrapper(var):
    def callback(response):
        callbackfunction(response, var)
    return callback

myvar1 = class_object()

myfunction(myvar1, wrapper(myvar1))

因此,

requests.get()
最终将调用
func(response)
,实际上将是
callback(response)
,它调用
callbackfunction(response, myvar1)

© www.soinside.com 2019 - 2024. All rights reserved.