回调函数一般用于对于结果的编程,或是在异步操作中执行,是在一般顺序编程的基础上,外加一个通用的处理模块,让代码更加简洁高效。一个简单的示例程序:
def some_action(value):
return value + 1
def run_main(user_id, func, value): # 回调函数,这里的功能是记录日志
print(f"函数运算 | USER_ID:{user_id}, FUNC:{func.__name__}, VALUE:{value}")
print(f"结果记录 | USER_ID:{user_id}, RESULT:{func(value)}") # 记录结果
def main():
user_id = "123456"
run_main(user_id, some_action, 1)
run_main(user_id, some_action, 2)
run_main(user_id, some_action, 3)
if __name__ == '__main__':
main()
在这个函数中,some_action
称为回调函数,run_main
称为中间函数。在上面的逻辑中,回调函数执行了一个具体的操作(value+1),而中间函数对这个操作的调用和结果都进行了记录,而在使用的时候,我们看到的是main函数。这是回调函数一般的逻辑过程。
稍微复杂一点,我们会基于回调函数的功能返回不同的结果:
import random
def some_action():
return random.choice([200, 404, 500])
def run_main(user_id, func): # 回调函数,这里的功能是记录日志
result = func()
if result == 200:
return 200, "访问成功"
elif result == 404:
return 404, "页面不存在"
elif result == 500:
return 500, "逻辑错误"
def main():
user_id = "123456"
result_code, result_str = run_main(user_id, some_action)
if result_code == 200:
print('访问成功')
else:
print(f'访问失败,代码{result_code},反馈{result_str}')
if __name__ == '__main__':
main()
在这个程序中,main()
中只有看到run_main()
这个函数,这里通过回调就可以根据不同的some_action()
的具体反馈,给与不同的逻辑,将逻辑都写在run_main()
中