Python. Режими співставлення аргументів. Класифікація. Співставлення за позицією. Співставлення за іменами. Аргументи за замовчуванням. Приклади
Зміст
- 1. Режими співставлення аргументів у Python. Класифікація
- 2. Співставлення за позицією: Fn(value). Приклад
- 3. Співставлення за іменами: Fn(name=value). Приклад
- 4. Режим передачі аргументів за замовчуванням: def Fn(name=value). Приклад
- 5. Режим передачі аргументів за замовчуванням. Порядок слідування аргументів за замовчуванням в інструкції def
- 6. В якому порядку інтерпретатор здійснює співставлення аргументів у переліку аргументів функції?
- Зв’язані теми
Пошук на інших ресурсах:
1. Режими співставлення аргументів у Python. Класифікація
Уу мові Python передача аргументу в викликаючу функцію здійснюється через операцію присвоєння. При виклику функції об’єкт, що передається, присвоюється аргументу (параметру) функції, що описується в дужках в інструкції def
def Fn(a): # Використання аргументу (параметру) a в функції Fn ... return # Виклик функції Fn і передача їй об'єкту X X = 28 Fn(X) # У функції Fn() неявно виконується присвоєння a = X
Мова Python, як й інші мови програмування, підтримує різноманітні режими співставлення аргументів при виклику функцій. Нижче наведено перелік цих режимів
- режим співставлення за позицією Fn(value). При цьому режимі значення, що передаються у функцію, присвоюються іменам в функції у порядку зліва направо (дивіться п. 2);
- режим співставлення за іменами Fn(name=value);
- режим передачі аргументів за замовчуванням;
- режим передачі/отримання змінної кількості аргументів;
- узагальнені способи виклику функції.
⇑
2. Співставлення за позицією: Fn(value). Приклад
Це є класичний спосіб передачі аргументу. При цьому режимі значення, що передаються, присвоюються іменам в функції у порядку зліва направо.
Приклад.
# Аргументи. Режими співставлення. # Передача аргументу в функцію - співставлення за позицією # Функція, що отримує 4 аргументи def Fn(a, b, c, d): # у тілі функції виводяться значення аргументів з іменами print('Fn.a = ', a) print('Fn.b = ', b) print('Fn.c = ', c) print('Fn.d = ', d) return # Передача об'єктів у функцію Fn() Fn(1, 2, 3, 4) # Fn.a=1, Fn.b=2, Fn.c=3, Fn.d=4
Після запуску на виконання, програма видасть наступний результат
Fn.a = 1 Fn.b = 2 Fn.c = 3 Fn.d = 4
Як видно з результату, при виклику функції Fn()
Fn(1, 2, 3, 4)
число (об’єкт) 1 присвоюється параметру a в тілі функції. Відповідно числа 2, 3, 4 присвоюються параметрам b, c, d в тілі функції.
⇑
3. Співставлення за іменами: Fn(name=value). Приклад
Співставлення за іменами – це режим, в якому при виклику функції аргументи (об’єкти) містять імена, які описуються параметрами в тілі функції (в інструкції def). Ім’я параметру в інструкції def отримує значення, що присвоюється такому самому імені в виклику функції.
Приклад.
# Аргументи. Режими співставлення. # Передача аргументу в функцію - співставлення за іменем # Функція, що отримує 4 аргументи def Fn(a, b, c, d): # у тілі функції виводяться значення аргументів з іменами print('Fn.a = ', a) print('Fn.b = ', b) print('Fn.c = ', c) print('Fn.d = ', d) return # Передача об'єктів у функцію Fn() - задаються конкретні імена Fn(d=4, a=1, c=3, b=2) # Fn.a=1, Fn.b=2, Fn.c=3, Fn.d=4
Результат виконання програми
Fn.a = 1 Fn.b = 2 Fn.c = 3 Fn.d = 4
Якщо при виклику функції Fn(), задати неіснуючий параметр, то інтерпретатор видасть помилку. Наприклад, якщо у виклику функції фрагмент c=3 замінити на f=3
Fn(d=4, a=1, f=3, b=2)
то інтерпретатор видасть наступну помилку
TypeError: Fn() got an unexpected keyword argument 'f'
⇑
4. Режим передачі аргументів за замовчуванням: def Fn(name=value). Приклад
У цьому режимі, при оголошенні функції (в інструкції def) допускається задавати параметрам значення за замовчуванням. Це означає, що якщо параметр зі значенням за замовчуванням не отримає значення у викликаючому коді, то цьому параметру буде встановлено саме це значення за замовчуванням.
Наприклад, якщо оголошено функцію, що отримує значення за замовчуванням як показано нижче
def Fn(a=5): # тіло функції # ... return
то цю функцію можна викликати двома способами
... Fn() Fn(value) ...
де value – деякий об’єкт (число, рядок, список і т.д.), що створений раніше у програмі.
У першому випадку викликається функція без параметрів. Це означає, що в тілі функції параметр a отримує значення 5 (за замовчуванням).
У другому випадку викликається функція з одним параметром value. Це означає, що в тілі функції параметр a отримує передане значення value.
Приклад. У прикладі, функція отримує 4 параметри. Параметри c і d отримують значення за замовчуваннями, відповідно 10 і 100.
# Аргументи. Режими співставлення. # Передача аргументу в функцію - задавання значень за замовчуванням # Функція, що отримує 4 параметри. # Параметри c, d отримують значення за замовчуванням, відповідно 10 і 100 def Fn(a, b, c=10, d=100): # у тілі функції виводяться значення параметрів з іменами print('Fn.a = ', a) print('Fn.b = ', b) print('Fn.c = ', c) print('Fn.d = ', d) return # Передача об'єктів у функцію Fn() - задаються значення за замовчуванням Fn(1,2,3,4) # Fn.a=1, Fn.b=2, Fn.c=3, Fn.d=4 Fn(1,2,3) # Fn.a=1, Fn.b=2, Fn.c=3, Fn.d=100 Fn(1,2) # Fn.a=1, Fn.b=2, Fn.c=10, Fn.d=100
Як видно з вищенаведеного коду, функція Fn() може викликатись з двома, трьома та чотирма аргументами.
Результат виконання програми
Fn.a = 1 Fn.b = 2 Fn.c = 3 Fn.d = 4 Fn.a = 1 Fn.b = 2 Fn.c = 3 Fn.d = 100 Fn.a = 1 Fn.b = 2 Fn.c = 10 Fn.d = 100
⇑
5. Режим передачі аргументів за замовчуванням. Порядок слідування аргументів за замовчуванням в інструкції def
Якщо в описі функції в інструкції def іменам аргументів присвоюються значення за замовчуванням, то в цьому випадку потрібно дотримуватись певного порядку, який визначається наступним правилом:
- першими визначаються імена аргументів, які не отримують значення за замовчуванням. І вже після цього визначаються імена аргументів, що отримують значення за замовчуванням.
Наприклад. Нехай задано функцію Fn(), яка отримує три аргументи a, b, c. Якщо при описі функції, для аргументів a, b задати значення за замовчуванням наступним чином
def Fn(a=1, b=2, c): # це є помилковий код # ... # ... return
то при запуску програми на виконання, інтерпретатор Python видасть синтаксичну помилку з наступним повідомленням
non default argument follows default argument
що означає “аргумент не за замовчуванням слідує за аргументом за замовчуванням”. Отже, аргументи за замовчуванням мають визначатись останніми в переліку аргументів функції в інструкції def.
Щоб поправити ситуацію, можна написати наступний код оголошення функції Fn()
def Fn(c, a=1, b=2): # це є коректний код # тіло функції Fn() # ...
У вищенаведеному оголошенні функції Fn(), імена аргументів за замовчуванням a, b слідують після аргументу не за замовчуванням c.
⇑
6. В якому порядку інтерпретатор здійснює співставлення аргументів у переліку аргументів функції?
Якщо оголошується деяка функція (інструкція def), що містить аргументи, то інтерпретатор слідує строго визначеному порядку використання співставлення аргументів. Цей порядок полягає в наступному:
-
- Співставлення неіменованих аргументів за позиціями (дивіться п. 2).
- Співставлення аргументів за іменами (дивіться п. 3).
- Співставлення додаткових неіменованих аргументів змінної довжини за синтаксисом кортежу *sequence. Більш детально про співставлення неіменованих аргументів дивіться тут.
- Співставлення додаткових іменованих аргументів змінної довжини з перетворенням у словник **name. Більш детально про перетворення аргументів змінної довжини у словник дивіться тут.
- Співставлення значень за замовчуванням (дивіться п. 4).
⇑
Зв’язані теми
- Передача аргументів у функцію. Зміна аргументів у тілі функції
- Режими співставлення аргументів. Аргументи змінної довжини. Комбінування різних способів співставлення аргументів. Приклади
⇑