Podobno kot pri spremenljivkah tabelaričnega tipa tudi spremenljivka tipa set dejansko vsebuje zgolj kazalec na množico (njen pomnilniški naslov), ne pa množice same. V večini primerov se nam tega dejstva sicer ni treba zavedati (zato ponavadi govorimo kar o »množici a«, ne pa – kar bi bilo pravilneje – o »množici, na katero kaže spremenljivka a«), včasih pa nas lahko neprijetno preseneti. Oglejmo si primer (in ga izvedimo):
Čeprav smo sedmico dodali zgolj množici a, se je »čudežno« pojavila tudi v množici c. V resnici se pri prirejanju c = a v spremenljivko c skopira zgolj kazalec na množico, na katero kaže spremenljivka a. Spremenljivki a in c torej kažeta na isto množico:
Če bi želeli ustvariti kopijo množice a, bi morali uporabiti stavek c = a.copy().
Kakšna pa je razlika med stavkoma a = a.intersection(b) in a.intersection_update(b), o kateri smo govorili? Stavek a = a.intersection(b) izdela novo množico kot presek obeh množic in s spremenljivko a pokaže nanjo. V našem primeru bi bilo to videti nekako takole:
Spremenljivki a in c sedaj ne kažeta več na isto množico!
Stavek a.intersection_update(b) pa spremeni množico, na katero kaže spremenljivka a. Takole:
Spremenljivki a in c še vedno kažeta na isto množico.
Seveda velja enako tudi za para funkcij union in update ter difference in difference_update.
Kaj se bo izpisalo po izvedbi spodnjih stavkov?
>>> a = {1, 2, 3, 4}
>>> c = a
>>> a.intersection_update({3, 4, 5})
>>> a = a.union({1})
>>> a
???
>>> c
???