---
title: Функции
seo:
  title: Функции — Data Analyst
  description: "Тема «Функции» для собеседования Data Analyst. Что такое декоратор? Объясните, как работает функция range."
---

[Все темы Data Analyst](/data-analyst)

## <strong>Что такое декоратор?</strong> [#q-14bee738d69b817da39af9cd25b20864]

Декоратор в Python — это функция, которая принимает другую функцию и расширяет её функциональность без изменения её кода.

Пример&#58;

```python
def my_decorator(func):
    def wrapper():
        print("Something before the function.")
        func()
        print("Something after the function.")
    return wrapper

@my_decorator
def say_hello():
    print("Hello!")

say_hello()
```

При вызове <code>say_hello&#40;&#41;</code> будет выведено&#58;

```python
Something before the function.
Hello!
Something after the function.
```

:::note[Ссылки для изучения]

1. [Функции в Python](https://habr.com/ru/companies/otus/articles/725374/)
   :::

---

## <strong>Объясните, как работает функция</strong> <code>range</code> [#q-14bee738d69b81d69cd4ee281254b2e5]

Функция <code>range</code> в Python используется для генерации последовательности чисел. Она имеет три параметра&#58; <code>start</code>, <code>stop</code>, <code>step</code>.

Примеры&#58;

1. <code>range&#40;stop&#41;</code>&#58;

   ```python
   for i in range(5):
       print(i)
   # Вывод: 0, 1, 2, 3, 4
   ```

1. <code>range&#40;start&#44; stop&#41;</code>&#58;

   ```python
   for i in range(1, 5):
       print(i)
   # Вывод: 1, 2, 3, 4
   ```

1. <code>range&#40;start&#44; stop&#44; step&#41;</code>&#58;

   ```python
   for i in range(1, 10, 2):
       print(i)
   # Вывод: 1, 3, 5, 7, 9
   ```

<code>range</code> возвращает объект, который можно итерировать для получения
чисел в заданном диапазоне.

:::note[Ссылки для изучения]

1. [Функции в Python](https://habr.com/ru/companies/otus/articles/725374/)
   :::

---

## <strong>В чем разница между</strong> <code>func</code> <strong>и</strong> <code>func&#40;&#41;</code><strong>?</strong> [#q-14bee738d69b81ad8cf7c8df179daf04]

<code>func</code>&#58; это ссылка на саму функцию, которую можно передать в
качестве аргумента или сохранить в переменную.

<code>func&#40;&#41;</code>&#58; это вызов функции, который выполняет её код и
возвращает результат.

Пример&#58;

```python
def greet():
    return "Hello"

# func - ссылка на функцию
reference = greet

# func() - вызов функции
result = greet()

print(reference)  # <function greet at 0x...>
print(result)     # "Hello"
```

:::note[Ссылки для изучения]

1. [Функции в Python](https://habr.com/ru/companies/otus/articles/725374/)
   :::

---

## <strong>Объясните, как работает функция</strong> <code>map</code> [#q-14bee738d69b81ed9abdd0ae8f491ac2]

Функция <code>map</code> в Python применяет заданную функцию ко всем элементам указанного итерируемого объекта (например, список) и возвращает итератор с результатами.

Пример&#58;

```python
def square(x):
    return x * 2

numbers = [1, 2, 3, 4, 5]
result = map(square, numbers)

print(list(result))  # [2, 4, 6, 8, 10]
```

<code>map</code> берет функцию <code>square</code> и применяет её ко всем
элементам списка <code>numbers</code>. Результат — новый итератор, который
преобразуется в список для отображения.

:::note[Ссылки для изучения]

1. [Функции в Python](https://habr.com/ru/companies/otus/articles/725374/)
   :::

---

## <strong>Объясните, как работает функция</strong> <code>reduce</code> [#q-14bee738d69b81f08dd2dc655fb6a55c]

Функция <code>reduce</code> из модуля <code>functools</code> в Python применяет указанную функцию к элементам последовательности, сводя её к одному значению.

Пример&#58;

```python
from functools import reduce

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

numbers = [1, 2, 3, 4, 5]
result = reduce(add, numbers)

print(result)  # 15
```

<code>reduce</code> последовательно применяет функцию <code>add</code> к
элементам списка&#58; сначала к первым двум, затем результат к следующему
элементу и так далее, пока не останется одно значение.

:::note[Ссылки для изучения]

1. [Функции в Python](https://habr.com/ru/companies/otus/articles/725374/)
   :::

---

## <strong>Объясните, как работает функция</strong> <code>filter</code> [#q-14bee738d69b81dcb4c7e68895b806b8]

Функция <code>filter</code> в Python используется для создания итератора, состоящего из элементов, которые удовлетворяют условию, заданному в виде функции.

Пример&#58;

```python
def is_even(n):
    return n % 2 == 0

numbers = [1, 2, 3, 4, 5, 6]
result = filter(is_even, numbers)

print(list(result))  # [2, 4, 6]
```

<code>filter</code> применяет функцию <code>is&#95;even</code> ко всем элементам
списка <code>numbers</code> и возвращает итератор, содержащий только те
элементы, для которых функция вернула <code>True</code>.

:::note[Ссылки для изучения]

1. [Функции в Python](https://habr.com/ru/companies/otus/articles/725374/)
   :::
