Lambda工作,定义函数没有

时间:2017-12-07 09:48:48

标签: python lambda pycharm pep8

这是有效的:

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()

我有两个问题:

  1. 为什么lambda正在工作而def没有? Aren他们应该是同等的吗?
  2. 如何阻止PyCharm抱怨此特定错误?我尝试使用#noinspection在lambda之前,但它无法识别。

1 个答案:

答案 0 :(得分:1)

Lambda表达式带有implicit return。因此,您的lambda表达式返回self.represent_mapping的返回值,但您的函数定义不是由于缺少返回。