You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 22:54:07