Sobes.tech
Middle

A Pythonban a paramétereket érték szerint vagy hivatkozás szerint adjuk át?

sobes.tech MI

Válasz az MI-től

Pythonban a paraméterek objektumra mutató hivatkozásként (pass-by-object-reference) kerülnek átadásra. Ez azt jelenti, hogy a függvény egy hivatkozást kap az objektumra, nem pedig az érték másolatát. Azonban a viselkedés az objektum módosíthatóságától függ:

  • Módosítható objektumok esetén (pl. listák, szótárak) a függvényen belüli változtatások az eredeti objektumon tükröződnek.
  • Módosíthatatlan objektumok esetén (pl. számok, sztringek, tuple-ök) a változtatási kísérletek új objektumot hoznak létre, az eredeti változat változatlan marad.

Példa:

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

Így elmondható, hogy a paraméterek hivatkozáson keresztül kerülnek átadásra, de a viselkedés hasonló a érték szerinti átadáshoz az immutábilis objektumok esetén.