Python中如何在前一个函数执行完成后,在另一函数内调用后续逻辑
实现方法
核心思路
要判断function1是否成功执行完成,需要让function1执行后留下可被检测的成功标识,所有校验逻辑完全放在function2内部即可实现需求,以下是3种常用实现方案:
- 方案1:通过返回值校验(最推荐,无额外全局污染)
如果允许在function2内部调用function1,直接让function1执行完成后返回布尔值标识执行结果,在function2内部调用并判断即可:
import time def function1(): try: print('This is function1!') time.sleep(5) print('Function1 is successful') return True except: # 执行出错返回False return False def function2(): # 所有判断逻辑都写在function2内部 if function1(): print('This is something about function1') else: pass # 外部直接调用function2即可,不需要额外加if判断 function2()
- 方案2:通过函数属性存储执行状态(适合function1已经在外部提前调用的场景)
如果你的业务逻辑要求function1必须在外部先执行,function2只做状态判断,可以给function1函数本身添加属性标记执行状态,不需要额外定义全局变量:
import time def function1(): try: print('This is function1!') time.sleep(5) print('Function1 is successful') # 给函数自身添加成功标记 function1.exec_success = True except: function1.exec_success = False # 外部提前执行function1 function1() def function2(): # 直接读取function1的属性判断执行结果 if hasattr(function1, 'exec_success') and function1.exec_success: print('This is something about function1') else: pass function2()
- 方案3:通过全局变量存储状态(写法最简单,适合小型脚本使用)
如果是简单脚本场景,可以用全局变量存储执行成功的标记:
import time # 定义全局状态标记 func1_success = False def function1(): global func1_success try: print('This is function1!') time.sleep(5) print('Function1 is successful') func1_success = True except: func1_success = False function1() def function2(): global func1_success if func1_success: print('This is something about function1') else: pass function2()
内容的提问来源于stack exchange,提问作者project.py
相关产品推荐
相关产品推荐

