Transmiterea variabilelor prin referință în Python
În Python, variabilele care conțin obiecte complexe sunt transmise prin referință. Aceasta înseamnă că toate modificările făcute într-o variabilă se vor reflecta în a doua. Și deși cu acest tip de atribuire a valorilor riscul de erori crește, pe de altă parte resursele de memorie a sistemului de operare sunt economisite semnificativ.
Să presupunem că avem două liste:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
Deoarece variabilei lst2 i s-a atribuit
valoarea lst1, acum în memoria operativă
a computerului este stocată o singură listă,
care este referită simultan de două
variabile.
Să modificăm primul element lst2
și să afișăm prima listă în consolă:
lst2[0] = '!'
print(lst1) # va afișa ['!', 2, 3, 4, 5]
Care va fi rezultatul executării următorului cod:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
lst2[0] = '!'
print(lst1)
Care va fi rezultatul executării următorului cod:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
lst2[0] = '!'
print(lst2)
Care va fi rezultatul executării următorului cod:
lst1 = ['a', 'b', 'c', 'd']
lst2 = lst1
lst3 = 'e'
lst2[2] = lst3
print(lst2)