2011-12-21 16 views
17

Pytanie proste i krótkie. Zamiana dwóch zmiennych w Pythonie jest bardzo łatwa: a, b = b, a. W porządku, nie mam zastrzeżeń :) Ale jestem zainteresowany, jak to działa wewnętrznie? Czy sam tworzy pewną tymczasową zmienną, czy jest to coś bardziej interesującego (tak się założę)?Jak wymiana zmiennych działa wewnętrznie?

Odpowiedz

31

Kod źródłowy Pythona jest konwertowany na bytecode, zanim zostanie wykonany. Można zobaczyć, jak swap działa wewnętrznie za pomocą dezasembler dis aby zobaczyć, co kod bajtowy wygląda następująco:

import dis 
>>> def f(a,b): a, b = b, a 
>>> dis.dis(f) 
    1   0 LOAD_FAST    1 (b) 
       3 LOAD_FAST    0 (a) 
       6 ROT_TWO    
       7 STORE_FAST    0 (a) 
      10 STORE_FAST    1 (b) 
      13 LOAD_CONST    0 (None) 
      16 RETURN_VALUE 

W prostych słowach, to popycha wartości A i B na stosie, obraca (swapy) top dwa elementy, a następnie ponownie wyświetla wartości.

Zobacz także:

+0

Awesome! A więc sztuczka to ROT_TWO ... Dziękuję bardzo! –

Powiązane problemy