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.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ