3.2 Встроенные функции#

Ранее мы упомянули встроенную область видимости, в которой уже определен ряд функций. Например, это функции, осуществляющие преобразование типов данных: int, str, list и другие. Далее мы отдельно выделим ряд функций, которыми мы будем активно пользоваться.

Встроенные функции для работы с числами#

abs - получить модуль числа

abs(-3.14)
3.14

divmod(a, b) - деление a на b, при котором мы сразу получаем и целую часть, и дробную

divmod(3.14, 3)
(1.0, 0.14000000000000012)

round - округление числа

round(-3.14)  # по умолчанию округление работает до целых
-3

Также в round можно указать необязательный параметр ndigits, определяющий, до какого знака будет производиться округление

round(-3.14, ndigits=1)  # округление до первого знака после запятой, задано именованным аргументом
-3.1
round(-3.14, 1)  # такое же округление, только заданное позиционным аргументом
-3.1

Примечательно, что в round в параметр ndigits можно передавать и отрицательные значения. Тогда округление будет производиться до десятков, сотен и т.д.

round(-314, -1)  # округление до 10**1
-310
round(-314, -2)  # округление до 10**2
-300

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

len - возвращает длину последовательности

len('Лштшфум')
7
len([8, 4, 15, 42, 16, 23])
6

min, max - возвращают минимальный и максимальный элемент последовательности соответственно

min('Лштшфум')
'Л'
max([8, 4, 15, 42, 16, 23])
42

sum - возвращает сумму элементов последовательности

sum([8, 4, 15, 42, 16, 23])
108

sorted - возвращает отсортированную последовательность

sorted([8, 4, 15, 42, 16, 23])
[4, 8, 15, 16, 23, 42]

Функции с произвольным количеством параметров#

Немного подробнее остановимся на встроенной функции, с которой мы уже знакомы - print. Мы знаем, что в неё можно передать сколько угодно аргументов и все они будут напечатаны, но мы пока не знаем, как это реализовано.

При определении функции в качестве параметров можно привести имена переменных с использованием * и **:

  • *args - переменная args будет определена как список всех позиционных аргументов

  • **kwargs - переменная kwargs будет определена как словарь (сопоставление) всех именованных аргументов

Сами имена args и kwargs могут быть заменены, ключевое значение имеют символы * и **.

Приведем пример такой функции:

def example(*args, **kwargs):

    print(args)
    print(kwargs)

example(4, 8, 15, 16, 23, 42, key='secret')
(4, 8, 15, 16, 23, 42)
{'key': 'secret'}

При объявлении функции можно комбинировать args и kwargs с другими параметрами. Важно, что args определяется после остальных обязательных и перед необязательными. kwargs определяется после всех остальных параметров. Параметры с * и параметры с ** могут встречаться только единожды

def example(a, b, *args, key='', **kwargs): 
    print(args)
    print(kwargs)

example(4, 8, 15, 16, 23, 42, key='secret')
(15, 16, 23, 42)
{}

print работает по такому же принципу. Он сначала принимает *args аргументов, а потом мы можем указать ему два именованных аргумента sep и end, которые уже рассматривались ранее

print(4, 8, 15, 16, 23, 42, sep=' | ', end=' !!!')
4 | 8 | 15 | 16 | 23 | 42 !!!