Python: уроки, справочник и задачи

Встроенные функции и методы Python 3

Раздел: Функции Python · Обновлено 31.10.2026

Встроенные функции Python доступны в любой программе без импорта: print(), len(), sorted() и еще около семидесяти имен. Ниже они собраны в тематические таблицы с кратким описанием, а примеры показывают самые полезные сочетания. Отдельно разобрано, чем встроенная функция отличается от метода и как случайно сломать стандартное имя.

Встроенные функции и методы Python 3
Фото: D-M Commons / CC BY-SA 3.0, Wikimedia Commons
Содержание статьи
  1. Что такое встроенные функции
    1. Функции и методы: в чем разница
  2. Числа и математика
  3. Создание и преобразование типов
  4. Работа с коллекциями и итераторами
  5. Объекты, атрибуты и классы
  6. Ввод, вывод и выполнение кода
  7. Ошибка затенения встроенных имен
  8. Частые вопросы
    1. Сколько встроенных функций в Python?
    2. Нужно ли импортировать встроенные функции?
    3. Чем sorted() отличается от list.sort()?
    4. Почему print(map(...)) выводит непонятный объект?

Что такое встроенные функции

Встроенные функции живут в модуле builtins, который интерпретатор подключает автоматически. Когда в коде встречается имя, Python ищет его сначала в локальной области, затем в глобальной и только потом среди встроенных. Поэтому len() или abs() работают сразу, без строки import.

Посмотреть полный список можно прямо из интерпретатора. Функция dir() вернет все имена модуля, включая классы исключений, поэтому отфильтруем только вызываемые объекты с маленькой буквы:

import builtins

names = [n for n in dir(builtins)
         if callable(getattr(builtins, n)) and n[0].islower()]
print(len(names))
print(names[:8])
# ['abs', 'aiter', 'all', 'anext', 'any', 'ascii', 'bin', 'bool']

Точное число зависит от версии и способа запуска: модуль site при обычном старте добавляет служебные exit, quit, copyright, credits и license, а фильтр по маленькой букве отбрасывает __import__. В самом языке Python 3.12 описана 71 встроенная функция.

Функции и методы: в чем разница

Функция вызывается сама по себе и получает объект аргументом: len(items). Метод принадлежит конкретному типу и вызывается через точку: items.append(5). Встроенные функции универсальны и работают с объектами разных типов, а методы есть только у того типа, где они определены.

words = ['груша', 'Яблоко', 'арбуз']

print(sorted(words))    # функция: возвращает новый список
words.sort()            # метод списка: меняет сам список, возвращает None
print(len(words), len('текст'), len({'a': 1}))  # 3 5 1

Многие встроенные функции внутри вызывают специальные методы объекта: len(x) обращается к x.__len__(), str(x) к x.__str__(). Поэтому собственный класс можно научить работать с len(), abs() или iter(). Методы стандартных типов разобраны отдельно: методы списка, строк и словарей.

Числа и математика

Эти функции работают с целыми, дробными и комплексными числами без подключения модуля math.

ФункцияЧто делает
abs(x)Модуль числа, для комплексного - его длина
divmod(a, b)Кортеж из целой части и остатка от деления
pow(x, y, mod)Степень, с третьим аргументом - по модулю
round(x, n)Округление до n знаков, для половин - к четному
sum(it, start)Сумма элементов, start прибавляется к результату
min(), max()Наименьший и наибольший элемент, поддерживают key и default
bin(), oct(), hex()Запись целого числа в двоичной, восьмеричной и шестнадцатеричной системе
print(divmod(17, 5))      # (3, 2)
print(round(2.5), round(3.5))  # 2 4 - банковское округление
print(pow(3, 4, 5))       # 1, то есть 81 % 5
print(max([], default=0)) # 0 вместо ValueError на пустом списке

Создание и преобразование типов

Имена встроенных типов одновременно работают как функции-конструкторы: они создают пустой объект или преобразуют переданное значение.

ФункцияЧто делает
int(), float(), complex()Числа из строки или другого числа; int('ff', 16) читает основание
str(), repr(), ascii()Строковое представление: для людей, для отладки, только ASCII
bool()Логическое значение: пустые коллекции, 0 и None дают False
list(), tuple(), set(), frozenset(), dict()Коллекции из любого итерируемого объекта
bytes(), bytearray(), memoryview()Неизменяемые и изменяемые последовательности байтов, доступ к буферу без копирования
chr(), ord()Символ по коду Unicode и обратно
format()Значение по спецификации формата, как в f-строках
print(int('101', 2), int(' 42 '))  # 5 42
print(bool([]), bool('0'))         # False True
print(ord('Я'), chr(1071))         # 1071 Я
print(format(1234567.891, ',.2f')) # 1,234,567.89

Работа с коллекциями и итераторами

Эта группа используется чаще всего: функции перебирают элементы любого итерируемого объекта, будь то список, строка, файл или генератор.

ФункцияЧто делает
len()Количество элементов
range()Ленивая последовательность целых чисел с началом, концом и шагом
enumerate()Пары (номер, элемент), начало счета задается аргументом start
zip(), map()Параллельный перебор и применение функции к каждому элементу
filter()Только элементы, для которых функция вернула истину
sorted(), reversed()Новый отсортированный список и обратный итератор
all(), any()Истинны ли все элементы или хотя бы один
iter(), next(), aiter(), anext()Получение итератора и следующего элемента, в том числе асинхронно
slice()Объект среза, который можно сохранить в переменную
scores = {'Аня': 91, 'Борис': 78, 'Вера': 85}

for place, (name, pts) in enumerate(
        sorted(scores.items(), key=lambda p: p[1], reverse=True), start=1):
    print(place, name, pts)
# 1 Аня 91
# 2 Вера 85
# 3 Борис 78

print(any(v < 80 for v in scores.values()))  # True

Функции map(), filter(), zip() и reversed() возвращают итераторы, а не списки. Их можно пройти только один раз, а чтобы увидеть содержимое, оборачивают в list(). Подробно про пару zip и map рассказано в статье о параллельном переборе данных.

Объекты, атрибуты и классы

Функции этой группы нужны для интроспекции, то есть исследования объектов во время работы программы, и для описания классов.

ФункцияЧто делает
type(), isinstance(), issubclass()Тип объекта и проверка принадлежности классу с учетом наследования
getattr(), setattr(), hasattr(), delattr()Чтение, запись, проверка и удаление атрибута по имени-строке
dir(), vars()Список доступных имен и словарь атрибутов объекта
id(), hash()Уникальный идентификатор объекта и его хеш
callable()Можно ли вызвать объект скобками
classmethod(), staticmethod(), property()Декораторы методов класса, статических методов и свойств
super(), object()Доступ к родительскому классу и базовый объект
class Point:
    def __init__(self, x, y):
        self.x, self.y = x, y

p = Point(2, 3)
print(vars(p))                   # {'x': 2, 'y': 3}
print(getattr(p, 'z', 0))        # 0, атрибута нет - вернулось значение по умолчанию
print(isinstance(True, int))     # True: bool наследуется от int

Ввод, вывод и выполнение кода

Последняя группа отвечает за общение программы с пользователем и файлами, а также за запуск кода, собранного во время работы.

print('a', 'b', 'c', sep=' | ', end='!\n')  # a | b | c!
age = int(input('Возраст: '))  # без int() получится строка
help(sorted)                   # справка по любой функции

Ошибка затенения встроенных имен

Имена встроенных функций не зарезервированы, их можно случайно переопределить. Если назвать переменную list, sum, max или id, встроенная функция станет недоступна до конца области видимости.

sum = 10 + 20
print(sum([1, 2, 3]))
# TypeError: 'int' object is not callable

del sum                  # удаляем свою переменную
print(sum([1, 2, 3]))    # 6, встроенная функция снова видна

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

Частые вопросы

Ответы на вопросы, которые чаще всего задают о встроенных функциях.

Сколько встроенных функций в Python?

В документации Python 3.12 описана 71 встроенная функция. С версиями список меняется: например, aiter() и anext() появились в 3.10.

Нужно ли импортировать встроенные функции?

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

Чем sorted() отличается от list.sort()?

sorted() принимает любой итерируемый объект и возвращает новый список. sort() есть только у списков, меняет список на месте и возвращает None.

Почему print(map(...)) выводит непонятный объект?

map() возвращает ленивый итератор, а не список. Чтобы увидеть значения, преобразуйте результат: list(map(str, nums)).