Sobes.tech
Junior

Как се предават аргументите на функция: по референция или по стойност?

sobes.tech AI

Отговор от AI

В Python аргументите не се предават точно по референция и не точно по стойност, а чрез механизъм, който често се нарича "pass by object reference" или "pass by sharing".

Това означава следното:

  • При предаване на аргумент към функция, се предава референция към обекта.
  • Ако обектът е променяем (например, списък, речник), промените вътре във функцията ще бъдат видими извън нея.
  • Ако обектът е неизменяем (например, число, низ, кортеж), при опит да го промените вътре във функцията ще се създаде нов обект, а оригиналният обект извън функцията ще остане без промяна.

Променяеми обекти:

# Променяем обект (списък)
def modify_list(items):
    items.append(4)

my_list = [1, 2, 3]
modify_list(my_list)
# my_list сега е [1, 2, 3, 4]

Непроменяеми обекти:

# Непроменяем обект (число)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number остава 5