Si të përdorni dhe shënoni argumentet e paracaktuar në funksionet e Python

biznes

Vendosja e një argumenti të paracaktuar në një përkufizim të funksionit Python bën që vlera e paracaktuar të përdoret nëse argumenti hiqet gjatë një thirrjeje funksioni.

Detajet e mëposhtme janë përshkruar më poshtë.

  • Vendosja e argumenteve të paracaktuar
  • Kufizimet në pozicionin e argumenteve të paracaktuar
  • Vini re se kur një listë ose fjalor përdoret si vlera e paracaktuar

Vendosja e argumenteve të paracaktuar

Nëse emri i argumentit = vlera e paracaktuar në përkufizimin e funksionit, vlera e paracaktuar do të përdoret kur të hiqet argumenti përkatës.

def func_default(arg1, arg2='default_x', arg3='default_y'):
    print(arg1)
    print(arg2)
    print(arg3)

func_default('a')
# a
# default_x
# default_y

func_default('a', 'b')
# a
# b
# default_y

func_default('a', arg3='c')
# a
# default_x
# c

Kufizimet në pozicionin e argumenteve të paracaktuar

Vendosja e një argumenti të paracaktuar përpara një argumenti normal (një argument për të cilin nuk është specifikuar asnjë vlerë e paracaktuar) kur përcaktoni një funksion rezulton në një gabim.
SyntaxError

# def func_default_error(arg2='default_a', arg3='default_b', arg1):
#     print(arg1)
#     print(arg2)

# SyntaxError: non-default argument follows default argument

Vini re se kur një listë ose fjalor përdoret si vlera e paracaktuar

Nëse një objekt i azhurnueshëm (i ndryshueshëm) si një listë ose fjalor specifikohet si vlera e paracaktuar, ai objekt do të krijohet kur të përcaktohet funksioni. Pastaj, kur funksioni thirret pa argumentin përkatës, përdoret i njëjti objekt.

Vlerat e paracaktuara të argumentit vlerësohen nga e majta në të djathtë kur ekzekutohet përkufizimi i funksionit. Kjo do të thotë që shprehja e argumentit të paracaktuar vlerësohet vetëm një herë kur të përcaktohet funksioni dhe e njëjta vlerë “e llogaritur” përdoret për secilën thirrje.
8.7. Function definitions — Python 3.10.2 Documentation

Kështu, për shembull, nëse përcaktohet një funksion që merr një listë ose fjalor si argument të paracaktuar dhe i shton elemente dhe thirret shumë herë pa atë argument, elementët do të shtohen në të njëjtin objekt në mënyrë të përsëritur.

Shembull për një listë.

def func_default_list(l=[0, 1, 2], v=3):
    l.append(v)
    print(l)

func_default_list([0, 0, 0], 100)
# [0, 0, 0, 100]

func_default_list()
# [0, 1, 2, 3]

func_default_list()
# [0, 1, 2, 3, 3]

func_default_list()
# [0, 1, 2, 3, 3, 3]

Shembull për një fjalor.

def func_default_dict(d={'default': 0}, k='new', v=100):
    d[k] = v
    print(d)

func_default_dict()
# {'default': 0, 'new': 100}

func_default_dict(k='new2', v=200)
# {'default': 0, 'new': 100, 'new2': 200}

Një objekt i ri krijohet sa herë që thirret funksioni.

def func_default_list_none(l=None, v=3):
    if l is None:
        l = [0, 1, 2]
    l.append(v)
    print(l)

func_default_list_none()
# [0, 1, 2, 3]

func_default_list_none()
# [0, 1, 2, 3]
Copied title and URL