Lambda 有效,定义的函数无效
Lambda works, defined function does not
这是有效的:
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
但无法识别。
Lambda 表达式带有 implicit return。因此,您的 lambda 表达式是 returning self.represent_mapping
的 return 值,但您的函数定义不是由于缺少 return.
这是有效的:
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
但无法识别。
Lambda 表达式带有 implicit return。因此,您的 lambda 表达式是 returning self.represent_mapping
的 return 值,但您的函数定义不是由于缺少 return.