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

Python3代码为何未打印"Came here"语句?

问题解答:print语句未执行的原因

核心原因:filter的惰性特性

Python3 中的 filter() 函数返回的是一个惰性迭代器,它不会立刻执行传入的 lambda 逻辑,只有当你主动去迭代这个迭代器(比如用 list() 转换、循环遍历它)时,才会触发 lambda 里的函数调用。

你的代码里只定义了 ans = filter(...),但没有对 ans 做任何迭代操作,所以 lambda x:not x() 根本没被执行,自然不会调用 a.test(),也就不会打印 "Came here"。

额外问题:生成器next方法的语法错误

另外你的代码里还有一个语法问题:Python3 中生成器的 next 调用方式是内置函数 next(generator),或者调用生成器的 __next__() 方法,原来的 self.check_gen.next() 是 Python2 的写法,会抛出 AttributeError。正确写法应该改成:

return next(self.check_gen)

验证方法

如果把最后一行代码改成:

ans = list(filter(lambda x:not x(), task_list))

这时候 list() 会迭代 filter 返回的迭代器,触发 lambda 调用 a.test(),你就能看到 "Came here" 被打印出来了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 21:04:56