Sobes.tech
Middle

Параметрҳо дар Python бо арзиш ё бо истинод гузаронида мешаванд?

sobes.tech AI

Ҷавоб аз AI

Дар Python, параметрҳо тавассути истинод ба объект (pass-by-object-reference) гузаронида мешаванд. Ин маъно дорад, ки функсия ба истинод ба объект мегирад, на нусхаи арзиш. Аммо, рафтор вобаста аст аз тағирёбандагии объект:

  • Барои объектҳои тағирёбанда (масалан, рӯйхатҳо, луғатҳо), тағирот дар дохили функсия ба объекти аслӣ таъсир мерасонад.
  • Барои объектҳои тағирнопазир (масалан, рақамҳо, сатрҳо, tuple-ҳо), ҳар кӯшиши тағир додани объект дар дохили функсия як объект нав месозад, ва аслӣ бетағир мемонад.

Масалан:

def modify_list(lst):
    lst.append(4)

my_list = [1, 2, 3]
modify_list(my_list)
print(my_list)  # [1, 2, 3, 4]


def modify_int(x):
    x += 1

num = 5
modify_int(num)
print(num)  # 5

Бинобар ин, метавон гуфт, ки параметрҳо тавассути истинод гузаронида мешаванд, аммо рафтор монанд ба гузаронидани арзиш барои объектҳои тағирнопазир аст.