Подробно обяснение на позиционните аргументи и ключовите аргументи в python

Позиционни аргументи

Най-честият начин за присвояване на аргументи на параметри е чрез реда, в който те се предават(т.е. чрез тяхната позиция).

Функция example_func()е дефинирана с два параметъраxиy

def example_func(x, y):
    # body of the function 
    return None

Когато се направи това извикване на функция, стойностите, които се предават, докато се извършва извикването на функцията, се наричат ​​аргументи.

example_func(10,20)

Първият аргумент (10) съответства на първия параметър (x) и по подобен начин вторият аргумент (20) съответства на втория параметър (y), т.е. example_func(10, 20) param_1 = 10иparam_2 = 20

По същия начин, example_func(20, 10)x = 20и y = 10

Позиционните аргументи разглеждат позицията на аргумента и го присвояват на съответния параметър на същата позиция

Позиционният аргумент може да бъде направен незадължителен чрез указване на стойността по подразбиране за съответния параметър.

def example_func(x, y=77):
    print(f"The value of x is {x}")
    print(f"The value of y is {y}")
    return None

В горната функция за параметър y е зададена стойност по подразбиране. Така че, когато се направи извикване на функция, без да се посочва около y, стойността на y ще бъде зададена на 77.

example_func(40)

output : The value of x is 40
         The value of y is 77

Дори ако стойността yне е посочена в извикването на функцията, как се изпълнява? — без да предизвиква грешка. Работи, защото за аргумента y стойността вече е зададена на 77. И така, Python го използва, за да изпълни функцията успешно, без никакви грешки.

example_func(40, 90)

output : The value of x is 40
         The value of y is 90

Когато се направи извикването на функцията, стойностите по подразбиране за параметрите няма да работят, защото стойностите вече се предават като аргументи в извикването на функцията. Python ще интерпретира стойностите, които се предават като аргументи.

Помислете за

Разгледайте три аргумента, които трябва да бъдат предадени на функцията, като единият от тях е незадължителен

def example_func(x, y=77, z):
    print(f"The value of x is {x}")
    print(f"The value of y is {y}")
    print(f"The value of z is {z}")
    return None

x, y и z са три параметъра и стойността по подразбиране е посочена за y,исках да направя извикване на функция —example_func(5,25)— съгласно горното обяснение, ако вече има стойност по подразбиране за параметъра, тогава той не е задължително да предава аргумент, съответстващ на него.

example_func(5,25) — python, счита 5 за аргументсъответстващ наxитогава, какво ще кажете за 25?

example_func(5,25)

output : ERROR

python обърква, за да съответства наyилиz? Така че това води доГРЕШКА и функция не може да бъде дефинирана по такъв начинdef example_func(x, y=77, z)— би било СИНТАКСИЧНА ГРЕШКА

Ако позиционен параметър е дефиниран със стойност по подразбиране в дефиницията на функцията, тогава всеки позиционен параметър след него също трябва да получи стойност по подразбиране

В горния пример, когато стойност по подразбиране на y е дефинирана като 88, тогава позиционният параметър след y(което еz) също трябва да има някаква стойност по подразбиране(както е посочено по-долу)

def example_func(x, y=77, z=33):
    print(f"The value of x is {x}")
    print(f"The value of y is {y}")
    print(f"The value of zis {z}")
    return None

В тази функция — example_func, има стойност по подразбиране за y, както и за z

example_func(2)— параметърът x съответства на 2, а останалите параметри имат своите стойности по подразбиране

example_func(5)

output : The value of x is 5
         The value of y is 77
         The value of zis 33

example_func(2, 28)— параметърът xсъответства на2и параметърът yсъответства на 28а останалите параметри имат своите стойности по подразбиране

example_func(5, 28)

output : The value of x is 5
         The value of y is 28
         The value of zis 33

example_func(2, 28, 10)— параметърът xсъответства на2и параметърът yсъответства на 28и параметърът zотговаря на10

example_func(5, 28, 10)

output : The value of x is 5
         The value of y is 28
         The value of zis 10

Помислете

Ако искаме да посочим първия и третия аргумент във функция, като пропуснем втория аргумент?

В тази функция — example_func(x, y, z) — ако искаме да посочим аргументи за x иz, но не и за y— — този случай НЕ е възможен с позиционни-аргументи, тук влизат в действие ключови-аргументи.

Аргументи на ключови думи (наименувани аргументи)

Името на параметъра трябва да бъде посочено, когато е посочена стойност на аргумент

Когато правите извикване на функция, имената, предоставени с аргументи трябва да отговарят наимената на параметъра във функцията определение.

example_func(x=5, y=3, z=1)

Извикването на функция може да има както позиционни аргументи, така и именувани аргументи.

example_func(7, y=4, z=3)

С помощта на аргументи на ключови думи, позиционните аргументи могат по избор да бъдат зададени с помощта на името на параметъра.

Защо трябва да се използват именувани аргументи, дори ако функцията има параметри, които не са по подразбиране? — защото редът, в който аргументите се предават на функцията, няма значение.

example_func(y=4, z=8, x=2)

В горния пример аргументите се предават в различен ред от посочения в дефиницията на функцията.

Ако се използват наименуваните аргументи, всички аргументи, които се използват след наименуваните аргументи, също трябва да бъдат наименувани

example_func(z=10, 3, 1)

output : ERROR

python ще се обърка дали 3 и 1 съответстват на x иy (или) отговарят ли на y и x. Така че ще бъде СИНТАКСИЧНА ГРЕШКА.

example_func(9, y=2, 7)

output : ERROR

Това също ще бъде Грешказащото Python обърква дали9 и 7 съответстват наx иy (или) съответства ли на yи x. Така че това също ще бъде СИНТАКСИЧНА ГРЕШКА.

След като се използва аргумент-ключова дума (наименован-аргумент), трябва да използвате аргумент-ключова дума след това за всеки друг идващ аргумент.

example_func(6, y=2, z=3)

Това ще работи, защото Python приема 6за позиционен аргумент на функцията — example_func2 и 3 е аргумент-ключова думакъм функцията example_func.