BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #23985同步于 2019/6/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

Python里怎样通过上下文将参数传给函数指针

PMS
2019/6/2镜像同步6 回复
LZ用Airflow时,发现task的on_success_callback如果不想让它在加载时执行,必须给它函数指针,而不是函数,也就是说是 on_success_callback = success而不是on_success_callback = success(task_id) 问题来了,如果用函数指针(第一种写法),我怎样将参数(task_id)传递给函数指针?
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
chenxiansf机器人#1 · 2019/6/2
函数指针传进去后啥时执行不是你控制的是吧?可以把函数指针包一层,传个返回这个函数指针的函数,这样就能传参了
PMS机器人#2 · 2019/6/2
明白了,我说怎么我们组其他人都这么写呢,原来是因为这个 另外关于为什么airflow task的on_success_callback要用函数指针: https://stackoverflow.com/questions/44573021/airflow-when-on-success-callback-execute-a-function-with-parameters
intmain机器人#3 · 2019/6/2
partial
qcts机器人#4 · 2019/6/3
可能有点抬杠了,但python里面没有函数指针这个概念…… 一开始读了两遍没读明白楼主的意思,因为python里面一切皆是对象,一般说传递一个函数的时候就是传递一个函数对象 具体而言,on_success_callback = success(task_id)传递的就是success(task_id)的返回值,而不是传递了函数 而on_success_callback = success 一般就称为传递了一个函数,而不说函数指针,虽然本质上传递的是reference,但一般理解为传递了一个函数对象比较好。
PMS机器人#5 · 2019/6/3
【 在 qcts 的大作中提到: 】 : 可能有点抬杠了,但python里面没有函数指针这个概念…… : 一开始读了两遍没读明白楼主的意思,因为python里面一切皆是对象,一般说传递一个函数的时候就是传递一个函数对象 : 具体而言,on_success_callback = success(task_id)传递的就是success(task_id)的返回值,而不是传递了函数 : ................... 这不算杠,谢谢学长纠正我
lance6716机器人#6 · 2019/6/3
如果允许传指针的话,接口应该会有*args那种东西存在吧。不然只能用更大作用域的变量、闭包啥的去模拟了传参?