Python funksiyalarında standart arqumentlərdən necə istifadə etmək və qeyd etmək olar

Biznes

Python funksiyasının tərifində defolt arqumentin təyin edilməsi, funksiya çağırışı zamanı arqument buraxılıbsa, defolt dəyərin istifadə edilməsinə səbəb olur.

Aşağıdakı təfərrüatlar aşağıda təsvir edilmişdir.

  • Defolt Arqumentlərin qurulması
  • Defolt arqumentlərin mövqeyinə məhdudiyyətlər
  • Qeyd edək ki, siyahı və ya lüğət standart dəyər kimi istifadə edildikdə

Defolt Arqumentlərin qurulması

Əgər arqument adı = funksiya tərifində defolt dəyərdirsə, müvafiq arqument buraxıldıqda defolt dəyər istifadə olunacaq.

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

Defolt arqumentlərin mövqeyinə məhdudiyyətlər

Funksiyanı təyin edərkən standart arqumentin normal arqumentdən (heç bir defolt dəyəri göstərilməyən arqument) əvvəl yerləşdirilməsi xəta ilə nəticələnir.
SyntaxError

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

# SyntaxError: non-default argument follows default argument

Qeyd edək ki, siyahı və ya lüğət standart dəyər kimi istifadə edildikdə

Əgər siyahı və ya lüğət kimi yenilənə bilən (dəyişən) obyekt standart dəyər kimi göstərilibsə, funksiya müəyyən edildikdə həmin obyekt yaradılacaq. Sonra funksiya müvafiq arqument olmadan çağırıldıqda eyni obyektdən istifadə edilir.

Defolt arqument dəyərləri funksiya tərifi yerinə yetirildikdə soldan sağa qiymətləndirilir. Bu o deməkdir ki, defolt arqument ifadəsi funksiya müəyyən edildikdə yalnız bir dəfə qiymətləndirilir və hər zəng üçün eyni “hesablanmış” dəyər istifadə olunur.
8.7. Function definitions — Python 3.10.2 Documentation

Beləliklə, məsələn, siyahı və ya lüğəti öz standart arqumenti kimi qəbul edən və ona elementlər əlavə edən funksiya müəyyən edilərsə və həmin arqument olmadan dəfələrlə çağırılırsa, elementlər eyni obyektə təkrar əlavə olunacaq.

Siyahı üçün nümunə.

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]

Lüğət üçün nümunə.

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}

Funksiya hər dəfə çağırılanda yeni obyekt yaradılır.

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