Перейти к содержимому
шпаргалка.
Esc
навигацияоткрыть⌘Jпредпросмотр
На этой странице

Функции и их особенности

Все темы Python Developer

Какие способы существуют для определения функций в Python и в чем заключаются их различия?

Обычные функции в Python определяют с помощью def или lambda. Ниже также показано применение функций высшего порядка.

Определение функции с использованием ключевого слова def:

  • Этот способ наиболее распространен.

  • Функции, определенные с помощью def, могут иметь имя и список параметров.

  • Используются для определения пользовательских функций.

Пример:
def my_function(x):
    return x * 2

Лямбда-функции (анонимные функции):

  • Определяются с помощью ключевого слова lambda.

  • Обычно используются для создания простых однострочных функций.

  • Могут принимать любое количество аргументов, но содержат только одно выражение.

Пример:
multiply = lambda x: x * 2

Применение функций высшего порядка: map(), filter() и functools.reduce().

  • Функции высшего порядка принимают другие функции как аргументы или возвращают их. map() и filter() встроены, reduce() импортируется из functools.

  • Используются для выполнения операций над другими функциями или структурами данных.

Пример:
# Пример с map()
result = map(lambda x: x * 2, [1, 2, 3, 4])
print(list(result))  # Вывод: [2, 4, 6, 8]

Каким образом параметры передаются в функции Python?

Параметры в Python могут передаваться в функции двумя основными способами:

Позиционные параметры:

  • Параметры передаются в том порядке, в котором они определены в сигнатуре функции.

  • Позиционные параметры связываются с аргументами в вызове функции по их порядку.

  • Передаваемые значения связываются с параметрами согласно их позиции.

Пример:
def greet(name, age):
    print(f"Привет, {name}! Тебе {age} лет.")

greet("Иван", 30)  # Передача параметров по позиции

Именованные параметры:

  • Параметры передаются с указанием их имени в вызове функции.

  • Позволяют передавать параметры в любом порядке, если указаны их имена.

  • Улучшают читаемость кода и делают его более ясным.

Пример:
def greet(name, age):
    print(f"Привет, {name}! Тебе {age} лет.")

greet(age=30, name="Иван")  # Передача параметров по именам

Что такое лямбда-функции?

Это анонимные функции, которые могут быть определены без использования ключевого слова def. Они обычно используются для создания простых функций в одну строку кода, обычно для передачи встроенным функциям высшего порядка, таким как map(), filter() и sorted(). Лямбда-функции могут принимать любое количество аргументов, но содержат только одно выражение.


В чем отличие позиционных аргументов от именованных?

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


Лямбда функции, зачем нужны и чего точно не может быть в них?

Лямбда-функции в Python - это анонимные (безымянные) функции, которые могут содержать только одно выражение. Они полезны в случаях, когда требуется передать небольшую функцию в качестве аргумента другой функции или создать функцию на лету без необходимости определения ее имени.

Вот основные применения лямбда-функций:

Передача функции в качестве аргумента:
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))

Альтернатива map() с lambda: списковое включение без отдельной функции.

numbers = [1, 2, 3, 4, 5]
squared = [x**2 for x in numbers]
Создание коротких функций на лету:
add = lambda x, y: x + y

Эта страница была полезной?