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 !!!
Практические задания