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

3
我希望将我的代码改为异步用于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()

我可以成功地将一个回调函数传递给请求,问题在于如何向该回调函数传递参数。
基本上,目标是执行回调函数的传递参数的方法。

1
可能是Does Python-requests have any callback method?的重复问题。 - quamrana
我可以成功地将回调函数传递给请求,问题是如何将参数传递给该回调函数。 - felartu
这个回答解决了你的问题吗?Python中如何将参数传递给函数指针参数? - user202729
1个回答

3

让我们创建一个偏函数:


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)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接