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

Pylint实例化协程生成器时触发assignment-from-no-return报错问题

Pylint E1111(assignment-from-no-return) 协程生成器实例化报错问题

报错现象

定义用作协程的生成器时,在实例化生成器的代码位置,pylint抛出如下错误:

E1111: Assigning result of a function call, where the function has no return (assignment-from-no-return)

该报错的核心矛盾点在于:对应行的赋值操作拿到的实际是生成器实例对象,而非普通函数调用的return返回值,不符合报错信息描述的场景。

最小复现代码

报错标记在a = test()行,可复现问题的完整代码如下:

def test():
    print((yield))

a = test()
print(a)
next(a)
try:
    a.send("hello, world")
except StopIteration:
    pass

已验证的现象与尝试过的操作

  • 将代码中(yield)修改为(yield None)或(yield True),均无法消除该报错
  • 若给函数添加return True语句,反而会触发no-member错误
  • 代码本身可以正常运行,实际执行输出如下:
$ python3 /tmp/test.py
<generator object test at 0x7f9de7801b30>
hello, world
  • 测试发现如果将函数改写为传统生成器形式,pylint不会抛出该报错,无报错的传统生成器示例代码如下:
def test():
    yield True

a = test()
print(a)
next(a)

处理诉求

已知可以通过直接禁用该pylint规则绕过提示,但希望在彻底理解报错触发逻辑后再做对应处理。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 07:18:23