Junior
Hogyan kerülnek átadásra az argumentumok egy függvénynek: referencia vagy érték szerint?
sobes.tech MI
Válasz az MI-től
A Pythonban az argumentumokat nem teljesen referencia szerint, és nem teljesen érték szerint adják át, hanem egy olyan mechanizmuson keresztül, amit gyakran "pass by object reference" vagy "pass by sharing" néven emlegetnek.
Ez azt jelenti, hogy:
- Amikor egy argumentumot átadunk egy függvénynek, akkor egy referenciát adunk át az objektumra.
- Ha az objektum módosítható (pl. lista, szótár), akkor a függvényen belüli változtatások láthatóak lesznek kívülről is.
- Ha az objektum nem módosítható (pl. szám, sztring, tuple), akkor a módosítási kísérlet során új objektum jön létre, és a függvényen kívüli eredeti objektum megtartja változatlanságát.
Módosítható objektumok:
# Módosítható objektum (lista)
def modify_list(items):
items.append(4)
my_list = [1, 2, 3]
modify_list(my_list)
# my_list most [1, 2, 3, 4]
Nem módosítható objektumok:
# Nem módosítható objektum (szám)
def modify_number(num):
num = num + 1
my_number = 5
modify_number(my_number)
# my_number továbbra is 5