[python] Python a ukazatele

Jirka Vejrazka jirka.vejrazka na gmail.com
Čtvrtek Leden 15 21:54:51 CET 2009


Ahoj,

 ukazatele v Pythonu opravdu nejsou potreba, to se vyresi tak nejak
samo. V tehle oblasti je dulezite porozumet tomu, co jsou "mutable" a
"immutable" typy (nebudu zkouset to prekladat). Dulezite je to jak se
chovaji pri zmene.
 - mutable typy se zmeni na miste, tj. "pointer" na objekt zustane
stejny, ale zmeni se objekt (pro ty, kdo prichazeji z jazyku s
pointery) - prikladem je treba list
 - immutable typy - pri zmene se vyrobi kopie puvodniho objeku "jinde
v pameti", "pointer" se presmeruje na ni a puvodni verze se zapomene.
Prikladem je typ int nebo treba string (to byva pro zacinajici
pythonisty prekvapujici)

Priklad (immutable)
>>> a = 1
>>> b = a
>>> a is b
True  <- "stejne pointery"
>>> a = 2
>>> a is b
False <- po zmene je "pointer na a" jiny

(mutable)
>>> c = [1, 2]
>>> d = c
>>> c is d
True <- zase "stejne pointery"
>>> c.append(3)
>>> c
[1, 2, 3]
>>> d
[1, 2, 3]
>>> c is d
True <- "mutable" objekt se zmenil, ale zustal v pameti na svem miste
a "c" i "d" stale ukazuji na stejne misto
>>>

Snad jsem to jeste vic nezamotal.

   Jirka


Další informace o konferenci Python