Множества в отличие от списков и кортежей могут хранить объекты только неизменяемого типа данных, например, числа или строки. Также они обладают двумя ключевыми особенностями: неупорядоченностью и уникальностью. К элементам множества нельзя обратиться по индексу, так как они не хранятся в каком-либо определенном порядке, а также множества игнорируют повторяющиеся элементы, оставляя только уникальные значения.
При этом множества изменяемы, поэтому большинство их методов изменяют исходное множество и возвращают None.
Любую встроенную коллекцию можно преобразовать в множество с помощью функции set():
numbers = [1, 2, 2, 3, 3, 3]
print(set(numbers))
# Вывод: {1, 2, 3}
Python предоставляет большой набор встроенных функций, некоторыми из которых мы уже пользовались, например, print() для вывода данных на экран или len() для определения количества элементов в коллекции. Исходный код большинства встроенных функций написан на том же языке, что и сам интерпретатор Python. И если наиболее используемым интерпретатором является CPython, написанный на C, то и код многих функций написан на C. Но существует поддержка и других языков, например, интерпретатор Jython использует язык программирования Java, а IronPython – C#.
Функции, написанные один раз, можно использовать бесконечное количество раз без необходимости повторного написания их кода. Это позволяет следовать одному из основополагающих принципов программирования DRY (от англ. Don’t Repeat Yourself – Не повторяйтесь), который заключается в том, что следует избегать избыточного дублирования кода.
В случае встроенных функций, нам не нужно знать, как именно они реализованы, для того чтобы их использовать. У каждой функции есть имя, по которому её можно вызвать, она может принимать определённые параметры и совершать определённые действия.
Anaconda Toolbox – это расширение для Jupyter Notebook и JupyterLab, которое позволяет синхронизировать проекты с облаком Anaconda, сохранять сниппеты кода и использовать уже готовые среды. Также через это расширение вы получаете доступ к ИИ-помощнику Anaconda Assistant.
Для полноценной работы с этим инструментом требуется регистрация, поэтому если вы не зарегистрировались на этапе установки Anaconda, то вы можете сделать это сейчас на официальном сайте.
Установить Anaconda Toolbox можно через Anaconda Navigator. Для этого просто найдите его в списке приложений на вкладке Home и нажмите кнопку Install.
Также его можно установить через менеджер conda:
conda install anaconda-toolbox
Программирование на Python требует внимания ко многим деталям, особенно когда речь идет о работе с текстом.
В Python некоторые последовательности символов, начинающиеся с обратного слэша (\), интерпретируются особым образом. Такие последовательности называют управляющими символами или escape-последовательностями. Они необходимы для задания специфичных действий в тексте, таких как перенос строки, табуляция или возврат каретки.
Символ переноса строки (\n) позволяет вывести на экран несколько строк текста без использования дополнительных вызовов функции print():
poem = "Духовной жаждою томим,\nВ пустыне мрачной я влачился."
print(poem)
Здесь символ \n указывает Python, что после "Духовной жаждою томим," следует перейти на новую строку:
В процессе разработки часто возникает необходимость получить информацию о созданном объекте: его атрибутах, методах или просто читабельное строковое представление. Для этого в Python существуют специальные инструменты.
Когда мы работали с объектами встроенных типов данных, то достаточно легко могли выводить их на экран. Но если мы используем функцию print() с объектом собственного класса, то увидим лишь название класса и адрес этого объекта в памяти компьютера.
Давайте создадим простой класс Student для работы со студентами и выведем на экран объект этого класса:
class Student:
def __init__(self, name: str, email: str):
self.name = name
self.email = email
student1 = Student("Романова Е.А.", "best_of_the_best@example.ru")
print(student1)
# Вывод: <__main__.Student object at 0x...>
Здесь вы видите имя __main__, означающее, что данный класс был определен в запускаемом файле. А также название класса объекта и адрес этого объекта в шестнадцатеричной системе счисления.
Рекурсия – это способ решения задачи, при котором функция вызывает сама себя, и такая функция называется рекурсивной.
Рекурсия позволяет, не используя цикл, разбить задачу на более мелкие, идентичные части и решать каждую из них с помощью того же самого алгоритма. Это похоже на ситуацию, когда для выполнения задания часть работы передаётся тому же исполнителю, но в более простом виде.
Рекурсия состоит из двух ключевых компонентов:
- Базовый случай – это условие, при котором функция прекращает вызывать саму себя. Он является точкой выхода и предотвращает бесконечные вызовы.
- Рекурсивный случай – это часть, где функция вызывает саму себя, но с измененными аргументами, чтобы каждый следующий вызов приближал функцию к базовому случаю.
Помимо базовых арифметических операций, Python предлагает набор встроенных функций, которые помогают работать с числами – это функция abs(), возвращающая модуль числа, функция round() для округления чисел, и функция pow(), эквивалентная оператору возведения в степень.
Функция abs() (от англ. absolute — абсолютный) позволяет получить абсолютное значение числа, то есть его модуль. В математике модуль представляет собой расстояние на числовой прямой от этого числа до 0. И так как расстояние не может быть отрицательным, то можно сказать, что модулем числа является это же число, но без учёта знака.
Функция abs() очень проста в использовании и в любом случае возвращает положительное значение этого же числа:
print(abs(5))
# Вывод: 5
print(abs(-10))
# Вывод: 10
print(abs(-3.14))
# Вывод: 3.14
Не весь код, который мы пишем, предназначен для непосредственного выполнения компьютером. Иногда нам нужно оставлять пояснения, заметки или временно отключать фрагменты кода. Для этого в программировании используются комментарии.
В Python однострочные комментарии начинаются с символа решетки (#). Все, что следует за ним до конца строки, игнорируется интерпретатором. Это позволяет добавлять в код объяснения или напоминания:
print("Привет, мир!") # Это поясняющий комментарий
Также в комментариях можно указать ожидаемый результат выполнения кода:
print("Привет, мир!")
# Вывод: Привет, мир!
Кроме пояснений комментарии позволяют быстро отключить отдельные участки кода без их удаления:
# Раскомментируйте эту команду, чтобы вывести сообщение
# print("Заблокированное сообщение")
Встроенные типы данных в Python позволяют эффективно работать с информацией различного формата. И если числовые и логические типы предназначены для хранения отдельных значений, то коллекции служат контейнерами для одновременного хранения множества элементов.
Коллекции в Python представлены такими типами данных, как уже хорошо знакомые нам строки, а также списки, кортежи, множества и словари.
Каждая встроенная коллекция обладает уникальным набором свойств, определяемых её упорядоченностью, изменяемостью и требованиями к уникальности элементов. Выбор подходящей коллекции зависит от конкретной задачи и требований к хранению и обработке данных.
Любой объект создаётся на основе класса, который является шаблоном, определяющим свойства и поведение объекта. Поэтому такой объект ещё называют экземпляром класса. Может быть вы помните, что функция type() возвращает конструкцию class <тип>. Это связано с тем, что все встроенные типы данных являются классами. Например, строка "Привет!" является объектом или экземпляром класса str и поддерживает всего его свойства и методы.
И мы можем не только использовать встроенные классы, но и создавать свои собственные. Давайте создадим класс для автомобиля в автосалоне. Для этого нам понадобится ключевое слово class, за которым следует имя класса, написанное с большой буквы. Если названия переменных и функций мы писали в «змеином регистре» snake_case, то классы принято именовать в «верблюжьем регистре» CamelCase. То есть каждое слово начинается с заглавной буквы и без разделителей следует за предыдущим:
class Car:
pass
Здесь мы создали пустой класс Car с помощью уже знакомого нам ключевого слова pass.