Sobes.tech
Junior

Kaip perduodami argumentai funkcijai: per nuorodą ar per reikšmę?

sobes.tech AI

Atsakymas iš AI

Python'e argumentai nėra perduodami tiksliai nuoroda ar tiksliai verte, bet per mechanizmą, kuris dažnai vadinamas "pass by object reference" arba "pass by sharing".

Tai reiškia šiuo būdu:

  • Kai argumentas perduodamas funkcijai, perduodama nuoroda į objektą.
  • Jei objektas yra modifikuojamas (pvz., sąrašas, žodynas), pakeitimai funkcijos viduje bus matomi ir už jos ribų.
  • Jei objektas yra nekeitžiamas (pvz., skaičius, eilutė, tuple), bandymas jį pakeisti funkcijos viduje sukurs naują objektą, o originalus objektas už funkcijos ribų liks nepakitęs.

Modifikuojami objektai:

# Modifikuojamas objektas (sąrašas)
def modify_list(items):
    items.append(4)

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

Ne modifikuojami objektai:

# Ne modifikuojamas objektas (skaičius)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number lieka 5