Sobes.tech
Middle

Ar Python parametrai perduodami pagal reikšmę ar pagal nuorodą?

sobes.tech AI

Atsakymas iš AI

Python'e parametrai perduodami per nuorodą į objektą (pass-by-object-reference). Tai reiškia, kad funkcija gauna nuorodą į objektą, o ne kopiją vertės. Tačiau elgsena priklauso nuo objekto keičiamumo:

  • Keičiamų objektų (pvz., sąrašų, žodynų) viduje atlikti pakeitimai atsispindi originaliame objekte.
  • Ne keičiamų objektų (pvz., skaičių, eilučių, tuple) bandymas keisti objektą funkcijos viduje sukuria naują objektą, o originalas lieka nepakitęs.

Pavyzdys:

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

Taigi, galima sakyti, kad parametrai perduodami per nuorodą, tačiau elgsena panaši į perduodamą per vertę ne keičiamų objektų atveju.