Ich habe Code (den jemand anderes geschrieben hat):
%Vor%was meiner Meinung nach umgeschrieben werden könnte als:
%Vor% Das würde natürlich scheitern, wenn jemand in attrs=None
übergeben würde, aber ist das etwas zu erwarten? Gibt es eine Strafe für die attrs={}
(extra überflüssige Diktat-Erstellung?)
Ich bin Python immer noch zu neu, um diese Fragen zu beantworten, aber ich bin neugierig.
Wenn ich das im Interpreter teste, bekomme ich:
%Vor%Wie verursacht das jemals ein Problem? Beachten Sie, dass ich IMMER das dict zu den attrs hinzufüge, auch wenn der Benutzer einen angegeben hat (was möglicherweise auf ein anderes Problem hinweist (ich sollte das Klassenattribut wahrscheinlich mit einem vorhandenen verschmelzen, falls vorhanden).
------------------- Und um den Fehler in den obigen zu zeigen ------------------
%Vor%Scheint immer noch in Ordnung, was ist das Problem?
%Vor% Ahhh, jetzt verstehe ich es, wenn {'something': 'extra'}
durch irgendeinen anderen Code hinzugefügt wird, der niemals aufgeräumt wird. Sicher, die Anziehungspunkte, die ich dort erzwinge, sind da, aber auch die {'something': 'extra'}
, die nicht sein sollten. Dies ist subtil genug, um ein gutes Futter für einen Verschleierungswettbewerb zu sein, Ausschau nach PERL!
Die Verwendung von attrs = {}
in der Funktionssignatur wird Sie beißen, da dieser Wert bei aufeinanderfolgenden Aufrufen der Funktion beibehalten wird. Der ursprüngliche Code ist am besten.
zB
%Vor%Beachten Sie, wie der Wert beim ersten Aufruf beim ersten Aufruf beibehalten wurde.
Da Ihre Signatur attrs={}
angibt, werden alle Benutzer entweder ein Diktat bereitstellen oder dieses Feld nicht verwenden, sodass es {}
ist. Daher ist es in diesem Fall fast unmöglich, dass jemand None
übergibt - in diesem Fall ist es seine Schuld. In diesem Fall wird das Diktat jedoch über mehrere Anrufe hinweg aktualisiert. Vielleicht möchten Sie das nicht.
Verwenden Sie immer sinnvolle Standardeinstellungen, wenn Sie Standardwerte verwenden.
Das Problem ist, dass das Wörterbuch einmal bei der Funktionsdefinition erstellt wird, so dass alle Aufrufe dasselbe Wörterbuch verwenden. Dies ist normalerweise NICHT das beabsichtigte Verhalten, daher die Tendenz für Leute, die = None-Version zu verwenden.
Tags und Links python