Конструктор уроків
1
Якщо символ * буде використаний усередині функції з параметром, довільна кількість позиційних аргументів буде згрупована у кортеж. В наступному прикладі визначення функції 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
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
Опрацювання параграфу 5.1.2



Що буде в результаті виконання програм?
Напишіть рядок виведення через кнопку "Тег CODE"
5
Прикріпити файли програм, які набирали в попередньому завданні
Рефлексія від 3 учнів
Сподобався:
Так: 2
Ні: 1
Зрозумілий:
Так: 1
Ні: 2
Потрібні роз'яснення:
Ні: 2
Так: 1
Створення й уведення структури таблиць. Поняття таблиці, поля, запису. Створення таблиць, означення полів і ключів у середовищі СКБД. Властивості полів, типи даних.