Hier sind einige Titeloptionen, die auf den Aspekten „Geheimnis' und „unerwartetes Verhalten' basieren: * Warum verhält sich „dict.fromkeys' bei veränderlichen Objekten so seltsam? * Das Geheimnis von `d

DDD
Freigeben: 2024-10-26 14:52:03
Original
923 Leute haben es durchsucht

Here are a few title options, playing on the

Enthüllung des Geheimnisses von dict.fromkeys und veränderlichen Objekten

Die Funktion dict.fromkeys in Python kann sich unerwartet verhalten, wenn sie mit veränderlichen Objekten verwendet wird. wie im folgenden Beispiel gezeigt:

<code class="python">xs = dict.fromkeys(range(2), [])
xs[0].append(1)
# xs now contains {0: [1], 1: [1]} instead of {0: [1], 1: []}</code>
Nach dem Login kopieren

Das rätselhafte Verhalten

Dieses Verhalten widerspricht scheinbar dem von Wörterbuchverständnissen, die unterschiedliche Werte für jeden Schlüssel beibehalten:

<code class="python">xs = {i: [] for i in range(2)}
xs[0].append(1)
# xs still contains {0: [1], 1: []}</code>
Nach dem Login kopieren

Die Diskrepanz verstehen

Der Hauptunterschied liegt in der Art und Weise, wie diese beiden Methoden Wörterbücher erstellen. In Python 2.6 (und früher) verweist dict.fromkeys für alle Schlüssel auf dasselbe veränderbare Objekt, während Wörterbuchverständnisse für jeden Schlüssel unterschiedliche Objekte erstellen.

Das Ergebnis ist, dass xs[0] im ersten mutiert wird Beispielsweise wird die Änderung in xs[1] widergespiegelt, da sie auf dasselbe Listenobjekt verweisen. Im zweiten Beispiel hingegen sind die Listen unterschiedlich, sodass sich die Mutation von xs[0] nicht auf xs[1] auswirkt.

Überraschung vermeiden

Zu vermeiden Bei Auftreten dieses unerwarteten Verhaltens wird empfohlen, nach Möglichkeit Wörterbuchverständnisse zu verwenden. Wenn Wörterbuchverständnisse nicht verfügbar sind (z. B. in Python 2.6), ist das Erstellen eindeutiger Objekte mithilfe eines Generatorausdrucks mit der Diktfunktion eine Alternative:

<code class="python">xs = dict((i, []) for i in range(2))</code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonHier sind einige Titeloptionen, die auf den Aspekten „Geheimnis' und „unerwartetes Verhalten' basieren: * Warum verhält sich „dict.fromkeys' bei veränderlichen Objekten so seltsam? * Das Geheimnis von `d. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!