如何实现launch函数返回输出后调用result()时抛出指定错误
实现方案
首先你的现有代码存在两个核心问题:
value是launch函数的局部变量,result函数无法直接访问该变量- 没有标记
launch是否设置了returnOutput=True的状态,无法在result调用时做判断
方法1:用全局变量存储状态(适合简单脚本场景)
# 定义模块级全局变量存储状态与计算结果 _returned_output = False _stored_value = None def launch(returnOutput=False): global _returned_output, _stored_value # 每次调用launch重置状态 _returned_output = returnOutput # 此处替换为你实际的业务计算逻辑 _stored_value = "value" if returnOutput: return _stored_value def result(): global _returned_output, _stored_value if _returned_output: raise RuntimeError("Can't get result if launched output.") return _stored_value
测试效果:执行print(launch(True), result())会直接抛出你指定的错误提示,符合需求。如果调用launch(False)后再调用result()则会正常返回结果。
方法2:用类封装(适合正式项目场景,避免全局变量污染)
class TaskRunner: def __init__(self): self._returned_output = False self._stored_value = None def launch(self, returnOutput=False): self._returned_output = returnOutput # 此处替换为你实际的业务计算逻辑 self._stored_value = "value" if returnOutput: return self._stored_value def result(self): if self._returned_output: raise RuntimeError("Can't get result if launched output.") return self._stored_value # 调用示例 runner = TaskRunner() # 下面的调用会抛出指定错误 print(runner.launch(True), runner.result())
这种方法把状态和逻辑都封装在类内部,不会和其他模块的全局变量冲突,扩展性也更强。
内容的提问来源于stack exchange,提问作者Sabified
相关产品推荐
相关产品推荐

