JavaRush /Курсы /Модуль 1: Python Core /Встроенные функции

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

Модуль 1: Python Core
8 уровень , 0 лекция
Открыта

1.1 Список популярных встроенных функций

Мы с вами уже познакомились с большим количеством встроенных функций, но мне хотелось бы рассказать об еще нескольких, которые будут вам полезны в ближайшее время:

  • id()
  • hash()
  • dir()

Ниже немного о них поподробнее:

Функция id()

Функция id() возвращает уникальный идентификатор объекта (число). Этот идентификатор является целым числом и остается уникальным для объекта в течение его существования. Обычно идентификатор соответствует адресу объекта в памяти, хотя это не гарантируется в спецификации Python.

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

Можно применять во время отладки программы и понимания того, как Python управляет объектами в памяти.


a = [1, 2, 3]
b = a
print(id(a))  # Выводит идентификатор объекта 'a'
print(id(b))  # Выводит тот же идентификатор, так как 'b' ссылается на тот же объект

Функция hash()

Функция hash() возвращает хеш-значение (число) для указанного объекта, если он хэшируем. Хэшируемые объекты в Python должны быть неизменяемыми и иметь постоянное значение хэша в течение их жизненного цикла.

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


print(hash("hello"))  # Возвращает хеш-значение строки "hello"
print(hash(42))       # Возвращает хеш-значение числа 42
print(hash((1, 2, 3)))  # Возвращает хеш-значение кортежа (1, 2, 3)

Важно! Хеш-значения неизменяемых объектов остаются постоянными в течение их жизненного цикла. Однако изменяемые объекты, такие как списки и словари, не являются хэшируемыми и не могут использоваться в качестве ключей в словарях или элементов множеств.

Функция dir()

Функция dir() возвращает список атрибутов и методов объекта. Если объект не указан, dir() возвращает список имен в текущей локальной области видимости. Эта функция полезна для изучения структуры объектов и их атрибутов.

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


class MyClass:
    def __init__(self):
        self.name = "Alice"
            
    def greet(self):
        print("Hello, " + self.name)
        
obj = MyClass()
print(dir(obj))  # Выводит список атрибутов и методов объекта 'obj'
print(dir())     # Выводит список имен в текущей локальной области видимости

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

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

  • zip()
  • min()
  • max()
  • sum()
  • count()

Функция zip()

Функция zip() объединяет несколько итерируемых объектов (например, списки, кортежи, строки) и возвращает итератор кортежей. Каждый кортеж содержит элементы, собранные из позиций с одинаковым индексом из всех итерируемых объектов.

Часто используется для объединения данных из нескольких итерируемых объектов, позволяя легко итерировать по ним одновременно. А также для создания словарей из двух списков — один для ключей, другой для значений.


names = ["Alice", "Bob", "Charlie"]
ages = [25, 30, 35]
combined = zip(names, ages)
print(list(combined))  # Вывод: [('Alice', 25), ('Bob', 30), ('Charlie', 35)]

Функция max()

Функция max() возвращает наибольший элемент из переданного итерируемого объекта или из нескольких переданных аргументов. Можно также указать ключевую функцию для определения правила сравнения.


numbers = [1, 2, 3, 4, 5]
print(max(numbers))  # Вывод: 5
            
# С ключевой функцией
words = ["apple", "banana", "cherry"]
print(max(words, key=len))  # Вывод: 'banana'

Функция min()

Функция min() возвращает наименьший элемент из переданного итерируемого объекта или из нескольких переданных аргументов. Можно также указать ключевую функцию для определения правила сравнения.


numbers = [1, 2, 3, 4, 5]
print(min(numbers))  # Вывод: 1
        
# С ключевой функцией
words = ["apple", "banana", "cherry"]
print(min(words, key=len))  # Вывод: 'apple'

Функция count()

Функция count() используется для подсчета количества вхождений элемента в итерируемом объекте, таком как список или строка. Вызывается у списка, коллекции или итератора.


numbers = [1, 2, 2, 3, 4, 2, 5]
print(numbers.count(2))  # Вывод: 3
    
text = "hello world"
print(text.count("o"))  # Вывод: 2

Функция sum()

Функция sum() возвращает сумму всех элементов итерируемого объекта. Опционально можно указать начальное значение, которое будет добавлено к сумме.


numbers = [1, 2, 3, 4, 5]
print(sum(numbers))  # Вывод: 15
    
# С начальным значением
print(sum(numbers, 10))  # Вывод: 25
    

1.3 Выполнение кода

И еще две функции, которые могут быть полезны вам как новичку:

  • eval()
  • exec()

Они обладают мощными возможностями, но требуют осторожного использования из-за потенциальных рисков безопасности. Вот подробная информация о каждой из этих функций:

Функция eval()

Функция eval(expression) принимает строку и выполняет её как выражение Python. Она возвращает результат выполнения этого выражения. Используется для вычисления строковых выражений как кода Python.

Примеры:


x = 10
result = eval("x + 5")
print(result)  # Вывод: 15

Функция exec()

Функция exec() принимает строку и выполняет её как код Python. В отличие от eval(), которая выполняет только выражения, exec() может выполнять любые инструкции Python, включая определения функций, циклы и импорт модулей. Эта функция не возвращает значение.

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


code = """
def greet(name):
    print(f"Hello, {name}!")
        
greet("Alice")
"""
exec(code)
# Вывод: Hello, Alice!

Важно! Как и eval(), exec() может быть опасным при использовании с недоверенными входными данными. Будьте осторожны и избегайте использования exec() для выполнения кода на production.

2
Задача
Модуль 1: Python Core, 8 уровень, 0 лекция
Недоступна
Системные функции.
Системные функции.
2
Задача
Модуль 1: Python Core, 8 уровень, 0 лекция
Недоступна
Коллекционирование
Коллекционирование
Комментарии (5)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
AlterAyrol Уровень 25
21 октября 2025
первое задание полностью сделано ctrl+c / ctrl+v с темы. Дикое желание добавить в валидатор на то, что бы задание не приняло с формулировкой: "ну ты хоть слово в слово не списывай :)"
Рустем Уровень 14
9 октября 2025
задания конечно ...... просто жуткая халтура....
Mr.Robot Уровень 21 Expert
23 февраля 2025
Сделал 2 списка. Максимальный элемент нашел в одном, минимальный - в другом. Валидатор ругается, что нужно использовать один и тот же список... )
Николай Уровень 17
18 февраля 2025
А count точно встроенная функция? Больше на метод похож.
Bahodir Daminov Уровень 90
24 сентября 2024
1 zadache nado text = "Hello" num = 12313 must have