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

Python函数显式返回None但doctest提示无返回值的问题

问题分析与解决方案

我一眼就看出问题出在你的doctest写法上!当Python函数返回None时,在交互式环境里调用它不会产生任何输出,但你在测试用例里却预期输出None,这就导致doctest报错说“Got nothing”。

举个简单的例子验证这个行为:

>>> def return_none():
...     return None
...
>>> return_none()
>>>  # 这里没有任何输出

你的测试用例写了:

>>> find_triple([6,11,7,2,3])
None

但实际调用返回None的函数不会有任何输出,doctest会认为预期输出是None,但实际没有内容,因此失败。


正确的测试方案

有两种可靠的方式来测试函数是否返回None:

方案1:检查返回值是否为None(推荐)

沿用你前两个测试用例的风格,用判断语句来验证返回值,这样更严谨清晰:

>>> find_triple([6,11,7,2,3]) is None
True
>>> find_triple([1, 1, 3]) is None
True

方案2:保留空输出的测试用例

如果你希望保持测试用例的直观性,可以去掉预期的None,留空行:

>>> find_triple([6,11,7,2,3])

>>> find_triple([1, 1, 3])

不过这种方式可读性稍差,不如第一种方案明确。


额外的小提示

你的yield_pair生成器逻辑是高效且正确的:它只生成i < j的元素对,因为x + y和y + x的求和结果一致,这样避免了重复计算,完全符合需求。第一个测试用例里检查返回值是否在[(4,5), (5,4)]里也合理,因为(4,5)是生成器会返回的有效对,测试会正常通过。

内容的提问来源于stack exchange,提问作者Wang Wenjun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:34:47