Функции в Python
В этой статье объясняются функции в Python.
YouTube Video
Функции в Python
Функции в Python — это важная возможность для определения повторно используемых блоков кода, которые позволяют организовать и упростить вашу программу, вызывая их по мере необходимости. Использование функций может улучшить читаемость кода и соответствовать принципу DRY (Don't Repeat Yourself, не повторяйте один и тот же код несколько раз).
Определение функций
Функции определяются с помощью ключевого слова def
. Основной синтаксис выглядит следующим образом:.
1def function_name(arg1, arg2, ..., argN):
2 """docstring (A brief description of the function)"""
3 processing
4 return return_value
Например, чтобы определить функцию, которая складывает два числа, вы бы написали:.
1def add(x, y):
2 """A function that adds two numbers and returns the result"""
3 return x + y
Вызов функций
Определенная функция может быть вызвана и использована следующим образом:.
1result = add(3, 4)
2print(result) # Output: 7
Компоненты функции
-
Имя функции: Имя функции, используемое для её вызова.
-
Аргументы (параметры): Имена переменных, которые принимают данные, переданные при вызове. Вы можете определить ноль или более аргументов.
-
Документационная строка (Docstring): строка, используемая для описания цели и использования функции. Необязательный.
-
Тело функции: Блок с отступом, где записаны инструкции, выполняемые функцией.
-
Возвращаемое значение: Значение, которое возвращается вызывающему коду с помощью оператора
return
. Еслиreturn
опущен, по умолчанию возвращаетсяNone
.
Типы аргументов
В Python существует несколько типов аргументов.
- Позиционные аргументы: Стандартный способ передачи аргументов в функции.
- Аргументы по умолчанию: Аргументы со значениями по умолчанию, которые можно опустить при вызове.
1def greet(name, message="Hello"):
2 print(f"{message}, {name}")
3
4greet("Alice") # "Hello, Alice"
5greet("Bob", "Good morning") # "Good morning, Bob"
- Аргументы переменной длины:
*args
для получения множества позиционных аргументов в виде кортежа и**kwargs
для получения их в виде словаря.
1def func(*args, **kwargs):
2 print("args:", args)
3 print("kwargs:", kwargs)
4
5func(1, 2, 3, a=4, b=5)
6# Output:
7# args: (1, 2, 3)
8# kwargs: {'a': 4, 'b': 5}
Правильное использование функций позволяет писать программы на Python более эффективно и продуктивно.
Лямбда-функции в Python
В Python lambda
-функции используются для определения анонимных, лаконичных функций. В отличие от функций, определенных с помощью ключевого слова def
, lambda
позволяет создавать короткие функции в одну строку. Здесь мы подробно объясним lambda
-функции в Python.
Основы lambda
-функций
lambda
-функции, также называемые анонимными функциями, используются для определения временных функций, не имеющих имени, как следует из самого названия. Основной синтаксис выглядит следующим образом:.
1lambda arguments: expression
аргументы
: Укажите аргументы функции. Можно указать несколько аргументов, разделив их запятыми.выражение
: Это выражение, которое вычисляется на основе аргументов. Результат выражения становится возвращаемым значением функции.
Например, следующий код определяет и выполняет lambda
-функцию, которая складывает два числа.
1add = lambda x, y: x + y
2print(add(5, 3)) # Output: 8
В этом примере lambda x, y: x + y
— это lambda
-функция, которая принимает два аргумента, x
и y
, и возвращает их сумму.
Случаи использования lambda
-функций
lambda
-функции полезны в ситуациях, когда нужно определить простую функцию на месте. Они особенно часто используются в следующих случаях:.
-
Когда они передаются в качестве аргументов другим функциям
- Это полезно в функциях высшего порядка (функциях, принимающих другие функции в качестве аргументов) при передаче коротких временных функций.
-
Когда указываются ключи для сортировки списков
- Они удобны для указания критериев сортировки (ключей) в таких функциях, как
sort()
илиsorted()
.
- Они удобны для указания критериев сортировки (ключей) в таких функциях, как
Пример использования в функциях высшего порядка
Типичные примеры функций высшего порядка включают map()
, filter()
и reduce()
. Эти функции принимают другие функции в качестве аргументов и применяют их к последовательностям, например к спискам.
1numbers = [1, 2, 3, 4, 5]
2squared = list(map(lambda x: x ** 2, numbers))
3print(squared) # Output: [1, 4, 9, 16, 25]
В этом примере lambda
-функция передается в функцию map()
для возведения в квадрат каждого числа из списка.
Примеры использования сортировки списков
Функция lambda
иногда может использоваться для указания пользовательского ключа при сортировке списка. Например, следующий код сортирует список кортежей на основе второго элемента.
1pairs = [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
2pairs.sort(key=lambda pair: pair[1])
3print(pairs)
4# Output: [(4, 'four'), (1, 'one'), (3, 'three'), (2, 'two')]
В этом примере используется функция lambda
для сортировки кортежей на основе их второго элемента (строки).
filter()
и lambda
Функция filter()
используется для фильтрации элементов в списке (или другом итерируемом объекте) на основе указанного условия.
1numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9]
2even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
3print(even_numbers) # Output: [2, 4, 6, 8]
В этом примере четные числа из списка фильтруются для создания нового списка.
lambda
и reduce()
Функция reduce()
используется для сокращения списка до одного значения. Это можно легко реализовать с помощью функции lambda
.
1from functools import reduce
2
3numbers = [1, 2, 3, 4, 5]
4product = reduce(lambda x, y: x * y, numbers)
5print(product) # Output: 120
В этом примере все элементы списка перемножаются для получения результата.
Избегайте использования сложных функций lambda
Преимущество функций lambda
заключается в их краткости, но они становятся сложными для чтения при использовании для реализации сложной логики. Поэтому их следует использовать для простых операций, которые можно выразить одной строкой. Для сложных операций определение функции с помощью def
более читаемо и удобно для сопровождения.
Например, следует избегать использования сложных функций lambda
, подобных приведенной ниже.
1# Complex and hard-to-read lambda function
2complex_func = lambda x, y: (x * 2 + y) if x > y else (x + y * 2)
В этом случае лучше использовать функцию, определенную с помощью def
, как показано ниже.
1def complex_func(x, y):
2 if x > y:
3 return x * 2 + y
4 else:
5 return x + y * 2
Заключение
Функции lambda
в Python — удобный инструмент для определения временных, коротких функций. Они часто используются в функциях высшего порядка или операциях со списками для лаконичного определения определенных условий. Однако функции lambda
следует ограничивать простыми задачами, отдавая предпочтение функциям def
для сложной логики.
Вы можете следовать этой статье, используя Visual Studio Code на нашем YouTube-канале. Пожалуйста, также посмотрите наш YouTube-канал.