Тағйирёбандаҳоро бо истинод дар Python гузарондан
Дар Python тағйирёбандаҳое, ки объектҳои мураккабро дороианд, бо истинод гузаронида мешаванд. Ин маъно дорад, ки ҳама тағйиротҳое, ки дар як тағйирёбанда ба амал оварда мешаванд, дар дуввумӣ инъикос хоҳанд ёфт. Ва гарчанде ки дар чунин навъи таъин кардани қиматҳо хатари пайдоиши хато афзоиш меёбад, аммо аз тарафи дигар захираҳои хотираи низомии ОС назаррас сарфа мешаванд.
Бигзор мо ду рӯйхат дошта бошем:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
Азбаски ба тағйирёбандаи lst2
қимати lst1 таъин карда шуд,
ҳоло дар хотираи фаъоли компютер як рӯйхат нигоҳ дошта мешавад,
ки ба он ду тағйирёбанда ҳамзамон ишора мекунанд.
Биёед унсури якуми lst2-ро тағйир диҳем
ва рӯйхати якумро ба консоли чоп кунем:
lst2[0] = '!'
print(lst1) # ['!', 2, 3, 4, 5]-ро чоп мекунад
Натиҷаи иҷрои коди зерин чӣ хоҳад буд:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
lst2[0] = '!'
print(lst1)
Натиҷаи иҷрои коди зерин чӣ хоҳад буд:
lst1 = [1, 2, 3, 4, 5]
lst2 = lst1
lst2[0] = '!'
print(lst2)
Натиҷаи иҷрои коди зерин чӣ хоҳад буд:
lst1 = ['a', 'b', 'c', 'd']
lst2 = lst1
lst3 = 'e'
lst2[2] = lst3
print(lst2)