Sobes.tech
Junior

Kuidas antakse funktsioonile argumendid: viitega või väärtusega?

sobes.tech AI

Vastus AI-lt

Pythonis ei saa argumente täpselt edasi anda kas otse viitega või täpselt väärtusega, vaid mehhanismi kaudu, mida sageli nimetatakse "pass by object reference" või "pass by sharing".

See tähendab järgmist:

  • Argumenti edastades funktsioonile edastatakse viide objekti.
  • Kui objekt on muudetav (näiteks nimekiri, sõnastik), siis muudatused funktsiooni sees on nähtavad ka väljaspool.
  • Kui objekt on muutumatu (näiteks number, string, tulp), siis selle muutmise katse funktsiooni sees loob uue objekti, ja algne objekt väljaspool funktsiooni jääb muutumatuks.

Muudetavad objektid:

# Muudetav objekt (nimekiri)
def modify_list(items):
    items.append(4)

my_list = [1, 2, 3]
modify_list(my_list)
# my_list on nüüd [1, 2, 3, 4]

Muutumatud objektid:

# Muutumatu objekt (arv)
def modify_number(num):
    num = num + 1

my_number = 5
modify_number(my_number)
# my_number jääb 5