[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