Paano gamitin at tandaan ang mga default na argumento sa mga function ng Python

Negosyo

Ang pagtatakda ng isang default na argumento sa isang kahulugan ng function ng Python ay nagiging sanhi ng paggamit ng default na halaga kung ang argumento ay tinanggal sa panahon ng isang function na tawag.

Ang mga sumusunod na detalye ay inilarawan sa ibaba.

  • Pagtatakda ng Mga Default na Argumento
  • Mga hadlang sa posisyon ng mga default na argumento
  • Tandaan na kapag ginamit ang isang listahan o diksyunaryo bilang default na halaga

Pagtatakda ng Mga Default na Argumento

Kung ang pangalan ng argumento = default na halaga sa kahulugan ng function, ang default na halaga ay gagamitin kapag ang katumbas na argumento ay tinanggal.

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

Mga hadlang sa posisyon ng mga default na argumento

Ang paglalagay ng isang default na argumento bago ang isang normal na argumento (isang argumento kung saan walang default na halaga ang tinukoy) kapag ang pagtukoy ng isang function ay nagreresulta sa isang error.
SyntaxError

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

# SyntaxError: non-default argument follows default argument

Tandaan na kapag ginamit ang isang listahan o diksyunaryo bilang default na halaga

Kung ang isang naa-update (nababago) na bagay tulad ng isang listahan o diksyunaryo ay tinukoy bilang ang default na halaga, ang bagay na iyon ay malilikha kapag ang function ay tinukoy. Pagkatapos, kapag ang function ay tinawag nang walang katumbas na argumento, ang parehong bagay ay ginagamit.

Ang mga default na halaga ng argument ay sinusuri mula kaliwa hanggang kanan kapag ang kahulugan ng function ay naisakatuparan. Nangangahulugan ito na ang default na expression ng argumento ay sinusuri nang isang beses lamang kapag ang function ay tinukoy, at ang parehong “kinakalkula” na halaga ay ginagamit para sa bawat tawag.
8.7. Function definitions — Python 3.10.2 Documentation

Kaya, halimbawa, kung ang isang function ay tinukoy na kumukuha ng isang listahan o diksyunaryo bilang default na argument nito at nagdaragdag ng mga elemento dito, at tinawag nang maraming beses nang walang argumentong iyon, ang mga elemento ay idaragdag sa parehong bagay nang paulit-ulit.

Halimbawa para sa isang listahan.

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]

Halimbawa para sa isang diksyunaryo.

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}

Ang isang bagong bagay ay nilikha sa bawat oras na ang function ay tinatawag.

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]