Die Widerlegungen in this thread ergeben für mich überhaupt keinen Sinn. Kann es jemand kaputt machen? Analogien herstellen? Warum ist das ein "missbräuchlicher Hack"?Warum ist es schlecht, Wörterbücher mit x = dict (x, ** y) anzuhängen?
-2
A
Antwort
3
dict(x, **foo)
... foo = { 'hello': 'world' }
gegeben, geschieht Folgendes:
dict(x, hello=world)
Diese relativ einfach ist - aber kwargs Verhalten für Schlüssel nur gut definiert ist, die tatsächlich als Schlüsselwort weitergegeben werden konnten Argumente in (allen verfügbaren Versionen von) Python. Betrachten Sie so etwas wie:
foo = { ('some', 'tuple'): 'value' }
... in dem Fall, dass Sie einen Schlüssel haben, die eigentlich nicht als Schlüsselwort-Argument übergeben werden könnten; **foo
zu bestehen wäre, ein Verhalten auszuüben, das für Leser nicht intuitiv definiert ist und das einige Versionen von Python (wie Python 3) explizit ablehnen.
dagegen:
x = dict(x) # create a new object
x.update(y)
... setzt nur auf wohldefinierte Verhalten und ist tragbar geht nach vorn.
Verwandte Themen
- 1. Ruby Seltsamkeit: x == y && [x, y] .uniq == [x, y]
- 2. Warum/Wenn in Python `x == y` ruft `y .__ eq __ (x)`?
- 3. Warum nicht javac akzeptieren `x = x +++++ y`?
- 4. Warum sind x = x + y und x = y + x manchmal anders?
- 5. Python, das effizienter ist; Wenn x! = y: x = y oder x = y
- 6. Ist Math.IEEERemainder (x, y) äquivalent zu x% y?
- 7. x, y = getPos() vs. (x, y) = getPos()
- 8. Prolog, Test (X, Y, Z): - Y ist X + Z
- 9. Wie mache ich eine unendliche Schleife mit "x <= y && x > = y && x! = Y"?
- 10. Ist es für GCC machbar, isnan (x) || zu optimieren? isnan (y) in isunordered (x, y)?
- 11. Warum ist die Pixelkoordinate in x, y Ebene x + y * Breite?
- 12. Pythonic tauschen x, y = y, x funktioniert nicht?
- 13. Pyautogui.click (x, y) Fehler
- 14. jQuery Attributselektor: [x = y] oder [x = z]
- 15. Darstellung der Werte (x, y) vs x._1, y._1
- 16. Warum funktioniert obj = {x, y} in Chrome?
- 17. Rund y = x * x zum nächsten
- 18. Gibt es in JavaScript einen Unterschied zwischen typeof x == 'y' und typeof x === 'y'?
- 19. Regex X/Y-Koordinate
- 20. Was bedeutet x [:] = y?
- 21. Warum liefert Skalar sub {(@x, @y)} ->() skalar @y?
- 22. Mysql-Abfragezähler x/y
- 23. Warum ist diese Umwandlung ungültig, wenn `x als Y` funktioniert?
- 24. Warum sind die Argumente zu atan2 Y, X und nicht X, Y?
- 25. Warum ist y vor x in ncurses Funktionen und Argumente?
- 26. Warum ist x undefiniert?
- 27. UnnötigLocalBeforeReturn - warum ist es schlecht?
- 28. Gibt es eine String-Hash-Funktion, die unterstützt h (x) + h (y) = h (x + y)
- 29. "x = ++ x" ist es wirklich undefiniert?
- 30. ist es möglich, die Position x, y titleLabel of UIButton?
Bitte erläutern Sie die Teile, die Sie nicht verstehen. Zum Beispiel scheint mir das klar zu sein: "Auch das schlägt in Python 3 fehl, wenn Schlüssel keine Zeichenfolgen sind." Und Guidos Aussage: "Es geht mir gut,' dict ({}, ** {1: 3}}} illegal zu deklarieren, denn schließlich ist es der Missbrauch des '**' Mechanismus. " –
Es kann in Python 3 fehlschlagen, daher sollte es entmutigt werden und es ist nicht so lesbar wie andere Alternativen. Welcher Teil ist nicht klar? – Cyb3rFly3r
Guido mag es nicht, und es macht Ihren Code nicht tragbar. Wenn Sie sich nicht für beide interessieren, verrückt werden? Es gibt keine objektive Möglichkeit, diese Frage zu beantworten. Sie fragen im Wesentlichen nach unseren Meinungen, die hier nicht behandelt werden. – roippi