Sobes.tech
Middle

Kas Pythonis parameetreid edasi antakse väärtuse või viitega?

sobes.tech AI

Vastus AI-lt

Pythonis edastatakse parameetrid objekti viitega (pass-by-object-reference). See tähendab, et funktsioon saab viite objekti, mitte väärtuse koopiat. Kuid käitumine sõltub objekti muutuvusest:

  • Muutuvate objektide (näiteks nimekirjad, sõnastikud) sees tehtud muudatused kajastuvad algses objekti.
  • Muutumatute objektide (näiteks numbrid, stringid, tükid) puhul loob iga katse objekti muuta funktsiooni sees uue objekti, jättes algse muutumatuna.

Näide:

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

Seega võib öelda, et parameetrid edastatakse viitega, kuid käitumine sarnaneb väärtuse edastamisega muutumatute objektide puhul.