Подробно обяснение на позиционните аргументи и ключовите аргументи в 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_func— 2 и 3 е аргумент-ключова думакъм функцията example_func.