2009-09-02 16 views
8

Poniżej znajduje się fragment kodu Pythona, który znalazłem, który rozwiązuje problem matematyczny. Co dokładnie robi? Nie byłem zbyt pewien, co dla Google.Co to za fragment kodu Pythona?

x, y = x + 3 * y, 4 * x + 1 * y 

Jest to specjalna składnia Pythona?

Odpowiedz

16
x, y = x + 3 * y, 4 * x + 1 * y 

jest odpowiednikiem:

x = x + 3 * y 
y = 4 * x + 1 * y 

WYŁĄCZENIEM że wykorzystuje pierwotne wartości X i Y w obydwu obliczeń - ponieważ nowe wartości X i Y są przypisane aż obie obliczenia są zakończone.

Ogólna forma jest:

x,y = a,b 

gdzie a i b są wyrażeniami wartości, które są przydzielane odpowiednio x i y. rzeczywiście można przypisać dowolną krotki (zbiór wartości oddzielonych przecinkami) do każdej krotki zmiennych o tej samej wielkości - na przykład

x,y,z = a,b,c 

będzie również działać, ale

w,x,y,z = a,b,c 

nie dlatego, że liczba wartości w prawej krotce nie odpowiada liczbie zmiennych w lewej krotce.

+4

Myślę, że zmienna tymczasowa dodaje klarowność. Mam nadzieję, że nie przeszkadza Ci – hop

+4

Właściwie to myślę, że wyjaśnienie tego z podkreślonym "WYJĄTKIEM" powoduje, że punkt jest bardziej wyraźny, więc cofnąłem zmianę. Mimo wszystko dzięki za poprawę, po prostu mam inne zdanie na ten temat. :) – Amber

+0

Ma doskonały rozsądek. Widzenie go w nawiasach sprawiło, że stało się to całkowicie jasne. Bardzo łatwo jest go szybko przeczytać i tęsknić za tym drobiazgiem. Dzięki! –

12

Jest to przydział do tuple, zwany również rozpakowywanie sekwencji. Prawdopodobnie jest to wyraźniejsze, gdy dodasz nawiasów wokół krotek:

(x, y) = (x + 3 * y, 4 * x + 1 * y) 

Wartość x + 3 * y jest przypisany do x i wartość 4 * x + 1 * y jest przypisany do y.

Jest to odpowiednik tego:

x_new = x + 3 * y 
y_new = 4 * x + 1 * y 
x = x_new 
y = y_new 
+7

Prawdopodobnie jeszcze jaśniejsze, jeśli grupujesz nawiasy inaczej: 'x, y = (x + 3 * y), (4 * x + 1 * y)'. Przecinek można łatwo tam pominąć. –

+0

Ach, tak, nawiasy sprawiały, że wszystko było jasne - oczy nie widziały tego przed [uderzeniem czołem] ... –

0

ja też ostatnio widziałem to określane jako „jednoczesnego przypisania”, który wydaje się uchwycić ducha kilku odpowiedzi.