【发布时间】:2018-05-21 09:14:47
【问题描述】:
这是有效的:
represent_dict_order = lambda self, data: self.represent_mapping('tag:yaml.org,2002:map', data.items())
yaml.add_representer(OrderedDict, represent_dict_order)
但是给了我一个PyCharm 警告:PEP8: do not assign a lambda expression, use a def
我听从了建议,但这不起作用:
def represent_dict_order(self, data):
self.represent_mapping('tag:yaml.org,2002:map', data.items())
yaml.add_representer(OrderedDict, represent_dict_order)
我明白了:
yaml.emitter.EmitterError: expected NodeEvent, but got DocumentEndEvent()
我有两个问题:
- 为什么
lambda工作而def不工作?他们不应该是等价的吗? - 我怎样才能停止
PyCharm抱怨这个特定的错误?我尝试在 lambda 前面加上#noinspection,但它无法识别。
【问题讨论】:
-
与使用 def 的函数定义相比,您的 lambda 具有返回值。
-
@strippenzieher:哎呀,隐式返回,对。尴尬,但我会接受答案。
-
对于第二个问题,如果您指的是 PEP8 警告,则需要忽略 E731。请参阅 stackoverflow.com/questions/28428307/…
标签: python lambda pycharm pep8