PEP 3103: Unterschied zwischen Groß- / Kleinschreibung und if-Anweisungscode

8

In PEP 3103 diskutiert Guido, wie er Python mit den verschiedenen Schulen eine switch / case-Anweisung hinzufügen kann von Gedanken, Methoden und Objekten. Darin macht er diese Aussage :

  

Ein weiterer Einwand ist, dass die First-Use-Regel verschleierten Code erlaubt   so:

%Vor%      

Dem ungeschulten Auge (nicht mit Python vertraut) wäre dieser Code äquivalent:

%Vor%      

aber das ist nicht das, was es tut (außer es wird immer mit dem gleichen Wert wie das zweite Argument aufgerufen). Dies wurde angesprochen, indem vorgeschlagen wurde, dass die Fallausdrücke nicht auf lokale Variablen verweisen dürfen, aber dies ist etwas willkürlich.

Ich hätte mich selbst nicht für unausgebildet oder nicht vertraut mit Python gehalten, aber nichts springt mir entgegen, da diese beiden Blöcke des Codes anders sind.

Worauf verweist er, dass diese beiden Code-Teile in der Ausführung anders waren?

    
Matthew Green 14.08.2015, 15:37
quelle

1 Antwort

10

Sie müssen die Beschreibung am Anfang dieses Abschnitts lesen. "Der älteste Vorschlag, um damit umzugehen, besteht darin, das Dispatch-Diktat einzufrieren, wenn der Schalter das erste Mal ausgeführt wird." Das bedeutet, dass der Wert von y zwischengespeichert wird, wenn die switch-Anweisung zum ersten Mal ausgeführt wird, so dass Sie sie zum ersten Mal wie folgt aufrufen:

%Vor%

Nachfolgende Aufrufe, z. B. foo(20,20) , werden tatsächlich verglichen:

%Vor%     
larsks 14.08.2015, 15:51
quelle

Tags und Links