Methode der Mehrfachzuordnung in Python

8

Ich versuche mich auf eine Zukunft in der Informatik vorzubereiten, also habe ich mit ECMAScript angefangen und versuche jetzt, mehr über Python zu lernen. Wenn man aus ECMAScript kommt und mehrere Zuweisungen sieht, wie zB a, b, c = 1, 2, 3 , bin ich einen Moment verwirrt, bis ich merke, dass es mehrere Aufgaben gibt. Um die Dinge ein wenig klarer zu machen, würde ich gerne (a, b, c) = (1, 2, 3) machen, aber ich bin mir nicht sicher, ob dies ein messbarer Leistungshit sein wird. Von dem, was ich verstehe, Tupel sind im Wesentlichen, wie mehrere Aufgaben unabhängig arbeiten, aber es gibt eine Vielzahl von Kuriositäten in der Welt, so dass ich versuche, nichts anzunehmen.

Vielen Dank im Voraus

    
Reid 06.02.2010, 02:55
quelle

4 Antworten

11

Es sollte keine Auswirkungen auf die Leistung haben. Die Klammern machen es nicht zu einem Tupel, das Komma macht es. Also (1,2,3) ist genau das gleiche wie 1,2,3

    
Ponkadoodle 06.02.2010, 02:59
quelle
13

Mit dem dis -Modul ist das sehr einfach zu überprüfen:

%Vor%

Siehe? Diese total redundanten Klammern machen einen absolut no Unterschied zum Bytecode, der generiert und ausgeführt wird - genau wie, sagen wir, a+b und (a+b) erzeugen und führen genau denselben Bytecode wie jeder andere aus. Wenn Sie also überflüssige Klammern hinzufügen möchten, sollten Sie sich selbst ausschließen - Leute, die Ihren Code lesen, mögen sie vielleicht nicht, aber diejenigen, die sie gerade ausführen, werden es nie bemerken. Warum nur bei zwei Paaren überflüssiger Klammern stoppen? Siehe,

%Vor%

sechs Paare redundanter Klammern (oder eine beliebige Anzahl tatsächlich) erzeugen immer noch genau den gleichen Code. Sobald Sie die offensichtliche minimale Anzahl von überflüssigen Klammern verlassen (überhaupt keine: Sie sind überflüssig ;-), genau wo hören Sie auf? -) Und warum dort, wenn es "frei" ist um noch ein Paar hinzuzufügen ... oder zwei ... oder drei ...? -)

    
Alex Martelli 06.02.2010 03:40
quelle
2

Es funktioniert auch für Listen:

%Vor%

funktioniert genauso gut

    
inspectorG4dget 06.02.2010 03:01
quelle
1

Mehrfache Zuweisung wird meines Wissens als eine Kombination aus Tupelpackung und Tupelentpacken implementiert, also sollte es die gleiche Wirkung haben.

    
ezod 06.02.2010 03:00
quelle