这是有效的:
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
没有? Aren他们应该是同等的吗?PyCharm
抱怨此特定错误?我尝试使用#noinspection
在lambda之前,但它无法识别。答案 0 :(得分:1)
Lambda表达式带有implicit return。因此,您的lambda表达式返回self.represent_mapping
的返回值,但您的函数定义不是由于缺少返回。