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

Python函数无有效返回值场景下的处理最佳实践

单返回值函数无有效返回场景的主流处理方案

当函数无法计算出有效返回值时(比如字典查找未匹配到对应key),针对仅返回1个值或无返回值的场景,目前行业内公认的处理方案主要有以下三种:


1. 返回None

Python内置的dict.get()方法就采用了该模式,实现逻辑简单直接。
该方案的缺点是调用方必须额外检查返回值是否为None,再根据检查结果执行对应逻辑,漏判很容易导致后续代码出现类型错误。

示例代码如下:

from typing import Optional

def getprice(car: Car) -> Optional[int]:
    if ispriceless(car):
        return None
    return car.value

def client():
    average_car_price_on_market = mean(
        [getprice(car) for car in get_all_cars() if getprice(car) is not None]
    )

注:实际开发中无需重复调用两次getprice,此处仅为突出该写法的繁琐特性。


2. 使用yield返回生成器

本质上相当于返回一个包含0个或1个元素的可迭代对象,在批量处理场景下可以简化调用方的过滤逻辑。
该方案的优势是在列表推导等场景下写法更简洁,可读性稍强;缺点是逻辑显性度不足,不熟悉该模式的开发者很容易忽略返回值是生成器的特性。

示例代码如下:

from typing import Generator

def getprice(car: Car) -> Generator[int, None, None]:
    if not ispriceless(car):
        yield car.value

def client():
    average_car_price_on_market = mean(
        [price for car in get_all_cars() for price in getprice(car)]
    )

3. 抛出异常

这是逻辑最显性的处理方案,调用方只要没有捕获异常就会直接终止执行,不会出现无效值向下游传递的问题。
该方案的争议点主要有两个:一是异常处理会带来额外的性能开销,二是目前行业内普遍不推荐将异常作为常规控制流使用。


内容的提问来源于stack exchange,提问作者Ryota Tomioka

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:36:05