Искать
Вы превысили запрос на
0 знаков

55. Итоги раздела «Функции в Python»

Не пройден
0
0

Уроки раздела «Функции в Python»

- Введение в раздел «Функции в Python»

- Основы функций в Python

- Область видимости в Python

- Замыкания и оператор nonlocal в Python

- Аргументы и параметры функций, операторы (звездочка) и (звездочка)(звездочка) в Python

- Анонимные функции (выражения lambda)

- Функциональное программирование (map, filter и reduce)

- Генераторы и оператор yield в Python

В предыдущем уроке вы узнали, чем отличаются генераторные функции и выражения, а так же познакомились с оператором yield. В разделе «Функции в Python» научились эффективно и повторно использовать написанный ранее код. Напомню, использование функций - простой, но не единственный способ сократить избыточность кода и разбить программу на смысловые части.

Краткий пересказ раздела «Функции в Python»

В первом уроке мы дали определение понятию «функция» и научились их создавать. Выяснили, чем отличаются аргументы и параметры, поговорили о полиморфизме и обсудили локальные переменные.

Отличие понятий «аргумент» и «параметр»

Аргумент – это фактическое значение, которое передается функции в виде данных. Параметр – это переменная, которая используется при создании функции.

Полиморфизм

Полиморфизм – это способность функции обрабатывать данные различных типов.

Далее познакомились с правилом LEGB (Local, Enclosed, Global, Built-in) и областью видимости переменных. Узнали для чего используется оператор global.

Потом попробовали разобраться со сложной темой - замыкания. В этом же уроке поговорили об операторе nonlocal.

В следующем уроке еще раз поговорили об аргументах и параметрах функций в Python и научились использовать операторы * и ** для передачи аргументов в функцию и сбора переданных в функцию аргументов.

Затем научились создавать функции без имени - анонимные функции (lambda). Немного поговорили о функциональном программировании и функциях map(), filter() и reduce().

Завершили раздел генераторными функциями и генераторными выражениями. Научились использовать оператор yield.

Новая информация из раздела «Функции в Python»

Функция в Python создается с помощью оператора def:

Пример (python)
def имя_функции(арг_1, арг_2, … арг_N):
    операторы 

Для возврата из функции используется оператор return:

Пример (python)
def mult(x, y):
    return x * y

print(mult(4, 6)) # => 24 

Чтобы сделать переменную глобальной, используйте оператор global. Но использовать его нужно правильно. Если забыли, вернитесь к уроку.

Вспомним один из примеров про замыкания и оператор nonlocal. Обязательно вернитесь к уроку и запустите все примеры еще раз:

Пример (python)
def up(num1):
    a = num1
    def inner():
        nonlocal a
        a -= 1
        return a
    return inner

up_one = up(10)
print(up_one()) # => 9
print(up_one()) # => 8
print(up_one()) # => 7
print(up_one()) # => 6 

Операторы * и ** используются не только для умножения и возведения в степень (такие операторы называются инфиксные). Вспомним пример распаковки итерируемого объекта в аргументы функции с помощью оператора *:

Пример (python)
def sum(a, b):
    print(a + b)

a = (3, 4)
sum(*a) 

И вспомним распаковку словаря с помощью оператора ** в аргументы функции:

Пример (python)
def sum(a, b):
    print(a) # => 5
    print(b) # => 4
    print(a + b) # => 9

a = {"b": 4, "a": 5}
sum(**a) 

Синтаксис lambda выражений следующий:

Пример (python)
lambda арг1, арг2, … аргN : выражение 

Пример (python)
f = lambda a, b : a + b
print(f(3, 2)) # => 5 

Функциональное программирование держится на трех функциях:

  • map() - применяет функции к элементам итерируемого объекта.
  • filter() - фильтрует элементы на основе проверяемой функции.
  • reduce() - применяет функции к парам элементов и результатов выполнения.

Оператор yield используется в обычных функциях, создаваемых с помощью оператора def. Такие функции называются генераторными. За счет использования таких функций мы можем возвращать по одному результату за вызов и останавливать выполнение функции с сохранением состояния. Проще вспомнить на примере вычисления квадрата чисел:

Пример (python)
def square(N):
    for i in range(1, N):
        yield i * i

result = square(1000000)

print(next(result)) # => 1
print(next(result)) # => 4
print(next(result)) # => 9 

Генераторные выражения создаются точно так же, как списковые включения, только в круглых скобках:

Пример (python)
result = (x for x in result if x[1] >= 18) 

Главное отличие от спискового включения — это то, что будет храниться в памяти после выполнения. Списковые включения (list comprehensions) после выполнения сохраняют в памяти весь генерируемый список, в свою очередь, генераторное выражение (generator expression) сохраняет в память только объект-генератор, с которым в дальнейшем можно работать по необходимости.

Заключение

В разделе «Функции в Python» вы научились создавать собственные именованные и анонимные функции, генераторные выражения и функции, а так же познакомились с новыми операторами для работы с ними. В следующем разделе будем строить более крупные функциональные блоки программы - модули и пакеты.

Тест

Две секундочки...

Похожие уроки Codebra

@codebra_official
Подписывайся на наш Telegram-канал!
Новости, полезный материал,
программирование и ИБ
Основы функций в PythonЗнакомство с Python
Аргументы и параметры функций, операторы * и ** в PythonЗнакомство с Python
Введение в раздел «Функции в Python»Знакомство с Python
Пользовательские функции в PHPКурс по PHP
Продолжаем написание классов в PythonЗнакомство с Python
Генераторы и оператор yield в PythonЗнакомство с Python
Итоги раздела «Самые основы Python»Знакомство с Python
Итоги раздела «Структуры данных в Python»Знакомство с Python
Типы данных в PythonЗнакомство с Python
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию и компьютерной безопасности. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Пентесту Active Directory, Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно