Python Map | Обучение
240 subscribers
197 photos
4 videos
1 file
86 links
Образовательный канал для программистов на Python 🐍

Сотрудничество – @HackingIP
Download Telegram
Оценка сложности алгоритма

Оценка сложности алгоритма представляет собой способ определения скорости выполнения алгоритма в зависимости от размера входных данных. Обычно сложность алгоритма измеряется с учетом времени выполнения (временная сложность) и использования ресурсов (пространственная сложность).

Временная сложность алгоритма определяет сколько времени потребуется на выполнение алгоритма в зависимости от размера входных данных. Временная сложность обычно выражается в "O-нотации". Например, алгоритм с временной сложностью O(n) будет иметь линейную зависимость от размера входных данных n.

Пространственная сложность алгоритма определяет сколько памяти потребуется на выполнение алгоритма в зависимости от размера входных данных. Например, алгоритм с пространственной сложностью O(n) будет занимать память пропорционально размеру входных данных n.

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

#теория
🤓2👍1
Функция и метод

Функция и метод – два основных понятия в программировании, их различие заключается в контексте использования.

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

Метод – это функция, определенная внутри класса. Он используется для выполнения операций на объектах данного класса. Методы могут иметь доступ к данным объекта и модифицировать их.

Метод это функция класса


#теория | @PyMapChannel
😎1
Модули и пакеты

Модуль - это файл с расширением .py, который содержит код на Python. В модуле можно определять функции, классы, переменные и другие элементы программы. Для использования функций или классов из модуля в другом файле, можно импортировать модуль с помощью ключевого слова import.

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

#теория | @PyMapChannel
💯1
Иерархия исключений

#теория | @PyMapChannel
Замыкания

Замыкание – это функция, которая сохраняет доступ к переменным из внешней функции (нелокальной области видимости), даже после того как выполнение этой функции завершено.

Как правило, замыкания используются для создания декораторов (функций-оберток), которые могут изменять поведение других функций.

#теория | @PyMapChannel
PEP8

PEP 8 (Python Enhancement Proposal 8) – это стандарт стиля кодирования для языка Python.

Он определяет правила оформления кода, именования переменных, расстановки пробелов и другие соглашения, которые делают код более читаемым и понятным.

Соблюдение PEP 8 важно для единообразия кода в проекте, удобства совместной работы и последующей поддержки программы.


#теория | @PyMapChannel
👍7
Кортеж (tuple)

Кортеж – это неизменяемая упорядоченная коллекция элементов. Он создается с использованием круглых скобок и может содержать любые типы данных. Кортеж похож на список, но он является неизменяемым типом (после создания кортежа хранимые в нем значения нельзя удалять или изменить).

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

#типы_данных | @PyMapChannel
👍1
Утиная типизация

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

Основная идея: при работе с объектом его тип не проверяется, вместо этого проверяются свойства и методы этого объекта.


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

#теория | @PyMapChannel
👍31
Итератор

Итератор – это объект, который способен возвращать элементы по одному за раз.

Для этого объект должен реализовать метод __next__(), который возвращает следующий элемент. Когда элементы закончились, он должен вызывать исключение StopIteration. Также этот объект имеет состояние и запоминает, где он находится во время итерации.


В частности генератор является подтипом итератора (но не наоборот).

#теория | @PyMapChannel
Пакетный менеджер pip

PIP – это стандартный пакетный менеджер для установки и управления библиотеками и пакетами Python. Он позволяет легко устанавливать, обновлять, удалять и управлять зависимостями Python-проектов.

Вот некоторые основные команды pip:

Установка пакета:
pip install package_name

Обновление пакета до последней версии:
pip install --upgrade package_name

Удаление пакета:
pip uninstall package_name

Просмотр установленных пакетов:
pip list

Установка нужной версии пакета:
pip install package_name==version

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

#теория | @PyMapChannel
👍3
Итерируемый объект

Итерируемый объект – это любой объект, реализующий метод iter() или getitem().

Цель итерируемого объекта – создать итератор. Для этого есть функция iter().


Ниже перечислены некоторые из наиболее распространенных итерируемых объектов:
кортежи;
● списки;
● строки;
множества;
словари;
файлы;
генераторы;

#теория | @PyMapChannel
👍2
Строковые литералы

Строковые литералы – это представление строки, как фиксированной последовательности символов в коде, в то время как строка – это объект данных в Python, который содержит последовательность символов.

В Python для создания строковых литералов можно использовать одинарные кавычки (') или двойные кавычки ("), а также группы из трех одинарных или двойных кавычек (''') или (""").


Символ обратной косой черты (\) используется для экранирования управляющих символов (например \n).

Строки могут начинаться с префиксов:
• r или R для создания необработанных (сырых) строк, которые обрабатывают обратную косую черту как символ литерала;
• u или U – устаревший литерал Юникода для упрощения обслуживания двух кодовых баз Python-2.x и Python-3.x;
• f или F для создания форматированных строк.

#теория | @PyMapChannel
🔥2
Различие между методом dict.get() и dict[key] в словарях

Метод словаря dict.get() вернет значение по умолчанию (если оно задано), или None, если значение по умолчанию не указано.

Обращение по ключу dict[key] вызовет исключение KeyError, если нужного ключа нет в словаре.

Таким образом, метод get() в словарях предоставляет безопасный способ получения значения по ключу, предотвращая возможные ошибки.

#теория #это_база | @PyMapChannel
🔥5
Байтовые объекты

Байтовые объекты представляют собой последовательность байтов, которая хранит информацию в двоичном формате.

В Python байтовые объекты представлены типами данных bytes и bytearray. Различие заключается в том, что bytes является неизменяемым типом данных, в то время как bytearray - изменяемым.

Также в Python имеется тип данных memoryview, предоставляющий доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.

Для создания байтовых объектов можно использовать байтовые литералы (синтаксис схож со строковыми литералами, за исключением того, что добавляется префикс "b").

В Python также существует модуль struct, который позволяет работать с байтовыми данными на низком уровне, осуществляя их упаковку и распаковку.

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


#теория | @PyMapChannel
5
Модуль os

Предустановленный модуль os в Python предоставляет инструменты для взаимодействия с операционной системой.

С его помощью можно выполнять множество задач, таких как управление файлами и директориями, работа с процессами, а также получение информации о системе. Модуль также поддерживает работу с путями файловой системы через интерфейс os.PathLike, что делает его удобным для создания кросс-платформенных скриптов.

Вот некоторые из основных функций модуля:

функция listdir()
функции getcwd() и getcwdb()


#теория | @PyMapChannel
👍3
Последовательность и коллекция в Python

Последовательности и коллекции являются ключевые понятиями в Python, служащими для структурирования и хранения информации.

Последовательность – это итерируемый объект, к элементам которого можно обратиться по целочисленному индексу.
Примеры последовательностей: строки (str), списки (list), кортежи (tuple).


Коллекция – это структура данных, которая позволяет хранить и управлять набором элементов. В отличие от последовательностей, элементы в коллекции могут быть неупорядоченными, и могут быть изменяемыми или обеспечивать быстрый поиск по ключу.
Примеры коллекций: словари (dict), множества (set, frozenset), в то же время и последовательности: строки (str), списки (list), кортежи (tuple).


Таким образом, все последовательности являются коллекциями, но не все коллекции являются последовательностями.

#теория | @PyMapChannel
👍3
«Странное» поведение % в Python

В отличие от C, Java или JS, оператор остатка от деления нацело % в Python всегда возвращает число, имеющее тот же знак, что и делитель.

Иногда это может давать «странный» результат при работе с отрицательными числами.

К примеру, сколько будет -5 % 4 ?
В ответе будет: 3 # вместо ожидаемого -1

Объяснение:
В Python оператор % работает следующим образом
mod = n - math.floor(n / base) * base

Для вопроса выше выше:
mod = -5 - math.floor(-1.25) * 4
mod = -5 - (-2*4)
mod = 3


В то время как другие языки используют усечение (int), вместо округления вниз (math.floor):
mod = n - int(n / base) * base

Что приводит к:
mod = -5 - int(-1.25) * 4
mod = -5 - (-1*4)
mod = -1


Ставьте «❤️»


#теория | @PyMapChannel
5🤓2
Python Map | Обучение
«Странное» поведение % в Python В отличие от C, Java или JS, оператор остатка от деления нацело % в Python всегда возвращает число, имеющее тот же знак, что и делитель. Иногда это может давать «странный» результат при работе с отрицательными числами. К…
Такое поведение выбрано вместо поведения C, потому что неотрицательный результат часто более полезен.

Примером может служить вычисление дней недели. Если сегодня вторник (день № 2), какой день недели будет за N дней до этого? В Python мы можем вычислять с помощью:
return (2 - N) % 7


Но в C, если N ≥ 3, мы получаем отрицательное число, которое является недопустимым числом, и нам нужно вручную исправить это, добавив 7:
int result = (2 - N) % 7;
return result < 0 ? result + 7 : result;


#теория | @PyMapChannel
👍1
Хранение атрибутов и методов в классах

В Python атрибуты и методы класса хранятся в специальном словаре, называемом __dict__. Этот словарь является атрибутом класса и позволяет хранить все его атрибуты и методы в формате пар "ключ-значение". Каждый ключ соответствует имени атрибута или метода, а значение представляет собой сам объект.

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

🐍 Python Map | Обучение | #теория
5👍1
Паттерны проектирования

Паттерны (шаблоны) проектирования — это проверенные решения для распространенных проблем в разработке программного обеспечения. Они упрощают проектирование и улучшают читаемость кода. Основные паттерны:

- Singleton (Одиночка): Обеспечивает единственный экземпляр класса с глобальной точкой доступа.

- Factory (Фабрика): Определяет интерфейс для создания объектов, позволяя изменять тип создаваемых объектов.

- Observer (Наблюдатель): Устанавливает зависимость "один ко многим", уведомляя зависимые объекты об изменениях.

- Strategy (Стратегия): Инкапсулирует семейство алгоритмов, позволяя их взаимозаменяемость.

🐍 Python Map | Обучение | #теория
👍2