Урок:

Використання аргументів з символами * і **. Анонімні функції

09.11.2023
0 0
Джерела використаної інформації: розкрити закрити
Путівник мовою програмування https://pythonguide.rozh2sch.org.ua
Підручник з інформатики 10 клас (профільний рівень), В.Руденко
Вміст уроку:
1
2
3
4
5

Урок не містить жодного завдання. Додайте завдання.

Щоб додати завдання, оберіть категорію завдання на панелі запитань.

1

1 з 12 балів

Якщо символ * буде використаний усередині функції з параметром, довільна кількість позиційних аргументів буде згрупована у кортеж. В наступному прикладі визначення функції print_days()

def print_days(*args):
 print('Get ready:', args)

args є кортежем параметрів. Всі аргументи, які ви передасте у функцію print_days()

print_days('Wednesday', 'Thursday', 'Friday', 'Weekend...')

будуть виведені на екран як кортеж args:

Get ready: ('Wednesday', 'Thursday', 'Friday', 'Weekend...')

Це корисно при написанні функцій, на зразок print(), які приймають довільну кількість аргументів. Наприклад, якщо у функції

def print_travel(required1, required2, *args):
 print('For train travel is required:', required1)
 print('For train travel is required too:', required2)
 print('All the rest:', args)

є також обов’язкові параметри (в даному випадку required1 і required2), у які будуть скопійовані значення позиційних аргументів ('return ticket', 'train') при виклику функції

print_travel('return ticket', 'train', 'carriage', 'seat', 'luggage rack')

то кортеж *args отримає всі інші аргументи, починаючи із значення 'carriage':

Ви можете використовувати два символа **, щоб згрупувати іменовані аргументи у словник, де імена аргументів стануть ключами, а їх значення - відповідними значеннями у словнику.

У наступному прикладі визначається функція print_character()

def print_character(**kwargs):
 print('Person\'s characteristics:', kwargs)

при виклику якої з іменованими аргументами

print_character(emotions='cheerful', sense='happy', look='slim')

виводяться її іменовані аргументи у вигляді словника:

Person's characteristics: {'emotions': 'cheerful', 'sense': 'happy', 'look': 'slim'}

При використанні символа * не потрібно обов’язково називати кортеж параметрів args, аналогічно при використанні символів ** називати словник параметрів kwargs, однак це поширена практика у Python.

2

1 з 12 балів

Анонімні функції: інструкція lambda

Python дозволяє в короткій формі оголошувати невеликі анонімні функції - лямбда-функції.

Вони ведуть себе точно так само, як і звичайні функції, які оголошуються ключовим словом def.

Анонімні функції можуть містити лише один вираз, але й виконуються вони швидше.

Часто такі маленькі функції потрібно передавати іншим функціям, як у випадку з ключовою функцією, яка використовується як спосіб сортування списку. У таких випадках великі функції зазвичай не потрібні, і було б незручно визначати функцію десь окремо від місця її виконання.

Анонімні функції створюються за допомогою інструкції lambda:

add = lambda x, y: x + y

Та ж сама функція add може бути визначена за допомогою ключового слова def:

def add(x, y):
 return x + y

Виконавши код

print(add(7, 8))

ми отримаємо однаковий результат в обох випадках:

15

Крім цього, анонімну функцію не обов’язково присвоювати змінній

print((lambda x, y: x + y)(5, 12))

і lambda-функції, на відміну від звичайної, не потрібна інструкція return:

17

При виконанні лямбда-функції обчислюється її вираз, а потім результат виразу автоматично повертається, тому завжди існує неявна інструкція return.

В яких випадках в програмному коді слід застосовувати лямбда-функції? Дуже часто, як вище було наголошено, лямбда-функції використовують для написання коротких функцій для сортування об’єктів за альтернативним ключем:

months = [(1, 'January'), (9, 'September'), (7, 'July'), (4, 'March')]
print(sorted(months, key=lambda x: x[1]))
print(sorted(months))

У наведеному вище прикладі ми сортуємо список кортежів по другому значенню в кожному кортежі. В даному випадку лямбда-функція забезпечує швидкий спосіб зміни порядку сортування:

[(1, 'January'), (7, 'July'), (4, 'March'), (9, 'September')]
[(1, 'January'), (4, 'March'), (7, 'July'), (9, 'September')]

3

4 з 12 балів
Тест до уроку: Використання аргументів з символами * і **. Анонімні функції
9 листопада 2023
0 0
Аватар профіля Губчик Вероніка Григорівна
Аватар профіля Губчик Вероніка Григорівна
Інформатика
10 клас
0 4 14 1 37 0

4

3 з 12 балів

Опрацювання параграфу 5.1.2

0500uv4u-bc42-701x278.png

0500uv6k-7413-700x263.png

0500uv6o-9828-680x186.png

Що буде в результаті виконання програм?

Напишіть рядок виведення через кнопку "Тег CODE"

5

3 з 12 балів

Прикріпити файли програм, які набирали в попередньому завданні

Рефлексія від 3 учнів

Сподобався:

0

Так: 2

Ні: 1

Зрозумілий:

0

Так: 1

Ні: 2

Потрібні роз'яснення:

0

Ні: 2

Так: 1

Рекомендуємо

Практична робота "Використання конструктора класу"

Практична робота "Використання конструктора класу"

253

Аватар профіля Губчик Вероніка Григорівна
Інформатика
10 клас

20 грн

9.1. Етапи розв’язування задач із використанням комп’ютера

9.1. Етапи розв’язування задач із використанням комп’ютера

114

Аватар профіля Губчик Вероніка Григорівна
Інформатика
8 клас

50 грн

Практична робота: Використання програм автоматизованого перекладу текстів

Практична робота: Використання програм автоматизованого перекладу текстів

174

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9—10 клас

50 грн

Функції користувача. Приклади задач

Функції користувача. Приклади задач

357

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9 клас

50 грн

Стандартні підпрограми для опрацювання символьних та рядкових величин

Стандартні підпрограми для опрацювання символьних та рядкових величин

146

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9 клас

50 грн

Практична робота: Розробка рекурсивних алгоритмів та їх реалізація у вигляді програм

Практична робота: Розробка рекурсивних алгоритмів та їх реалізація у вигляді програм

144

Аватар профіля Губчик Вероніка Григорівна
Інформатика
9 клас

30 грн

Схожі уроки

Впорядкування, пошук і фільтрування даних.

Впорядкування, пошук і фільтрування даних.

1290

Аватар профіля Вожга Ірина Леонідівна
Інформатика
9 клас

Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.

Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.

1113

Аватар профіля Савка-Ржематорська Оксана Василівна
Інформатика
9 клас

Цикли з передумовою у вкладених циклах

Цикли з передумовою у вкладених циклах

1345

Аватар профіля Вожга Ірина Леонідівна
Інформатика
6 клас

Налаштування часових параметрів аудіо- та відеоряду.

Налаштування часових параметрів аудіо- та відеоряду.

497

Аватар профіля Солодовнікова Катерина Олексіївна
Інформатика
8 клас

Елемент керування «кнопка». Поняття об’єкту та його властивостей і методів (на прикладі елементів екранної форми). Властивості і методи елементів керування.

Елемент керування «кнопка». Поняття об’єкту та його властивостей і методів (на прикладі елементів екранної форми). Властивості і методи елементів керування.

652

Аватар профіля Пилипенко Олена Володимирівна
Інформатика
8 клас

Елемент керування кнопка

Елемент керування кнопка

283

Аватар профіля Пилипенко Олена Володимирівна
Інформатика
8 клас