python - lambda函数中未定义的变量
问题描述
我有代码:
from functools import reduce
public_ids = [1,2,3,4,5]
filepath = '/path/to/file/'
rdd = sc.textFile(
filepath
)
new_rdd = reduce(
lambda a, b: a.filter(
lambda x: b not in x
),
public_ids,
rdd
)
此代码假设根据 id 列表过滤 rdd 中的行。rdd 是使用 spark 上下文 sc 的 textFile 方法从位于文件路径中的文件创建的。
此代码工作正常,但 pylint 引发错误:
E:未定义变量“b”(未定义变量)
我相信我编码的方式不是正确的方式。如何更改它以使 pylint 不会再次引发错误?或者它只是一个pylint
不能正确识别的结构?
解决方案
很可能是pylint中的一个错误。
这是2 年前的类似错误报告
foo = lambda x: lambda: x + 1 print(foo(1)())
运行时正确打印 2,但 pylint 错误报告
E: 1,24: Undefined variable 'x' (undefined-variable)
这是 pylint 1.4.x 的回归。
这是最近的一期,在 2018 年 11 月 14 日报告了同样的问题
该问题已在 #760 报告并由 #2274 修复。但是,该修复仅合并到仅支持 python >= 3.4 的 pylint 2.x 中,这给我们留下了 python 2 的 pylint 1.x 系列中未解决的错误。
编辑
看起来您的误报可能与上述问题略有不同,但是,我仍然认为这是一个错误。
我会尝试在他们的 repo 上创建一个问题,看看会发生什么(如果你决定这样做,请在评论中发布链接,以便我们关注它。)
推荐阅读
- apache-kafka - Kafka StreamsBuilder的table方法中为什么没有在API返工中指定StoreName?
- html - 引导程序。为什么div没有响应?
- c++ - 如何修改此 Makefile 以分别构建 c 和 cxx 文件?
- python - Python:循环遍历所有参数选项
- asp.net - CollapsiblePanelExtender 的目标面板在加载时不可见,需要折叠然后展开才能看到它
- metafor - 使用 escalc() metafor 包进行元分析的错误风险比/相对风险计算
- reactjs - 捆绑 React/Express 应用程序进行生产
- mysql - SQL 查询与给定消费者拥有的每个集合集的数量有关
- docker - 将我自己的代码连接到 kubernetes 中的标准 docker 映像的最佳实践
- codenameone - 代号一:全双工通话