[Tutor PyCZ] nejasnost v prirazovani promenych

Petr Prikryl PrikrylP na skil.cz
Úterý Únor 28 12:53:09 CET 2006



Lukas Lisa
> [...] nechapu co se deje zde:
> a, b = b, a+b
> a jaky je rozdil nezi tim a mezi
> a = b
> b = a+b

Zkusme to s čísly a=2 a b=3. 
Pak první zápis znamená

a, b = 3, 2+3

V a bude 3, v b bude 5.
V druhém případě...

a = 3
b = 3+3   

v a bude zase 3, ale v b bude 6,
protože "a" před druhým přiřazením
získalo novou hodnotu a součet 
je tedy jiný.

Přiřazení typu "a, b = b, a+b"
se v někdy nazývá také jako paralelní
přiřazení. Nejdříve se vyhodnotí celá levá
strana, poté se přiřadí pravé straně.

V Pythonu to jde o něco přesněji vysvětlit
také nějak takto:

Pokud uvedu místo jednoho výrazu více
výrazů oddělených čárkami, vznikne
n-tice (v příkladu dvojice). Každý
výraz je vyhodnocen zvlášť a jeho výsledek
se dosadí jako člen vznikající n-tice).

Efekt paralelního přiřazení vzniká díky
dalšímu kroku, kdy se členy výše popsané
n-tice postupně spojí s jmény na levé
straně přiřazení. V té době už jsou všechny
výrazy na pravé straně vyhodnoceny a 
jména a a b se tedy spojí s novými, již
existujícími hodnotami.

pepr


Další informace o konferenci Tutor