Dies funktioniert:Lambda funktioniert, definierte Funktion nicht
represent_dict_order = lambda self, data: self.represent_mapping('tag:yaml.org,2002:map', data.items())
yaml.add_representer(OrderedDict, represent_dict_order)
Aber gibt mir eine PyCharm
Warnung: PEP8: do not assign a lambda expression, use a def
ich den Rat folgen, aber das funktioniert nicht:
def represent_dict_order(self, data):
self.represent_mapping('tag:yaml.org,2002:map', data.items())
yaml.add_representer(OrderedDict, represent_dict_order)
Ich bekomme:
yaml.emitter.EmitterError: expected NodeEvent, but got DocumentEndEvent()
Ich habe zwei Fragen:
- Warum ist die
lambda
arbeiten und diedef
nicht? Sollen sie nicht gleichwertig sein? - Wie kann ich stoppen
PyCharm
über diesen spezifischen Fehler beschwert? Ich habe versucht, dem Lambda mit#noinspection
vorauszugehen, aber es wird nicht erkannt.
Ihr Lambda hat einen Rückgabewert im Vergleich zu Ihrer Funktionsdefinition mit def. – strippenzieher
@strippenzieher: ooops, impliziter Return, richtig. Peinlich, aber ich werde eine Antwort akzeptieren. – dangonfast
Für Ihre zweite Frage, wenn Sie die PEP8-Warnung meinen, müssten Sie E731 ignorieren.Siehe https://StackOverflow.com/questions/28428307/pycharms-code-style-inspection-ignore-switch-off-specific-rules – strippenzieher