Die Klasse verwendet collections.defaultdict
eine Standardfactory, mit der ein Standardwert generiert wird.
Wenn die im dict
-like-Objekt enthaltenen Werte standardmäßig verwendet werden sollen, False
kann die Instanz wie folgt erstellt werden:
d_false = defaultdict(bool)
Was ist der pythonischste Weg, um dasselbe für einen Standardwert von zu erreichen True
?
Mit anderen Worten, gibt es ein standardmäßiges aufrufbares Objekt, True
das idiomatisch als Verwandter von verwendet wird bool
?
Natürlich könnte die Fabrik als Lambda-Ausdruck gebaut werden:
d_true = defaultdict(lambda: True)
Dies könnte jedoch das Rad neu erfinden.
lambda: True
ist in Ordnung, solange Sie dieses Standarddiktat nicht auswählen müssen.int() == 0
,list() == []
,str() == ''
, etc. Also ich glaube nicht , dass es ein Standard - Weg , dies zu tun.lambda: value
Konstrukt ist die idiomatische pythonische Methode, um ein Diktat mit einem statischen Standardwert zu erstellen. Ich kenne keinen einfacheren Weg, um eine Funktion zurückzubekommenTrue
.object()
es wahr ist - nicht sicher, ob das nützlich istAntworten:
Nun, du kannst es tun
aber ich persönlich würde mit dem gehen
lambda: True
.quelle
pickle
mit einem Lambda kein Standarddiktat erstellen. Wenn dies eine Überlegung ist,True.__bool__
ist dies der richtige Weg. Aber es ist definitiv eine hässlichere Lösung. (Auch nicht verfügbar in Python 2.x, was wahrscheinlich nicht viel ausmacht, nur einen Monat, bis es EOL geht ...)Wir könnten
partial
als Alternative zulambda
:(Welches ist auch Python 2 freundlich.)
quelle
Wenn Sie nur einen "wahrheitsgemäßen" Wert wollen, können Sie verwenden
object
; Dieser Konstruktor gibt ein Objekt zurück, das in einem booleschen Kontext als wahr ausgewertet wird. Aber wenn Sie den tatsächlichen booleschen WertTrue
wollen, kenne ich keinen besseren Weg als daslambda: True
Konstrukt.Wie Aran-Frey oben sagte, kann man jedoch kein
pickle
Standarddiktat erstellen, dessen Fabrik eine istlambda
; Wenn das eine Überlegung ist, würde ich mit Andrej Keselys Lösung von gehenTrue.__bool__
.quelle