Оценка сложности алгоритма
Оценка сложности алгоритма представляет собой способ определения скорости выполнения алгоритма в зависимости от размера входных данных. Обычно сложность алгоритма измеряется с учетом времени выполнения (временная сложность) и использования ресурсов (пространственная сложность).
Временная сложность алгоритма определяет сколько времени потребуется на выполнение алгоритма в зависимости от размера входных данных. Временная сложность обычно выражается в "O-нотации". Например, алгоритм с временной сложностью O(n) будет иметь линейную зависимость от размера входных данных n.
Пространственная сложность алгоритма определяет сколько памяти потребуется на выполнение алгоритма в зависимости от размера входных данных. Например, алгоритм с пространственной сложностью O(n) будет занимать память пропорционально размеру входных данных n.
Оценка сложности алгоритма позволяет оценить эффективность алгоритма и выбрать наиболее подходящий под конкретную задачу.
#теория
Оценка сложности алгоритма представляет собой способ определения скорости выполнения алгоритма в зависимости от размера входных данных. Обычно сложность алгоритма измеряется с учетом времени выполнения (временная сложность) и использования ресурсов (пространственная сложность).
Временная сложность алгоритма определяет сколько времени потребуется на выполнение алгоритма в зависимости от размера входных данных. Временная сложность обычно выражается в "O-нотации". Например, алгоритм с временной сложностью O(n) будет иметь линейную зависимость от размера входных данных n.
Пространственная сложность алгоритма определяет сколько памяти потребуется на выполнение алгоритма в зависимости от размера входных данных. Например, алгоритм с пространственной сложностью O(n) будет занимать память пропорционально размеру входных данных n.
Оценка сложности алгоритма позволяет оценить эффективность алгоритма и выбрать наиболее подходящий под конкретную задачу.
#теория
🤓2👍1
Функция и метод
Функция и метод – два основных понятия в программировании, их различие заключается в контексте использования.
Функция – это блок кода, который выполняет определенную задачу и может быть вызван из любого места в программе. Функции могут быть определены как встроенные, так и созданные пользователем.
Метод – это функция, определенная внутри класса. Он используется для выполнения операций на объектах данного класса. Методы могут иметь доступ к данным объекта и модифицировать их.
#теория | @PyMapChannel
Функция и метод – два основных понятия в программировании, их различие заключается в контексте использования.
Функция – это блок кода, который выполняет определенную задачу и может быть вызван из любого места в программе. Функции могут быть определены как встроенные, так и созданные пользователем.
Метод – это функция, определенная внутри класса. Он используется для выполнения операций на объектах данного класса. Методы могут иметь доступ к данным объекта и модифицировать их.
Метод это функция класса
#теория | @PyMapChannel
😎1
Модули и пакеты
Модуль - это файл с расширением .py, который содержит код на Python. В модуле можно определять функции, классы, переменные и другие элементы программы. Для использования функций или классов из модуля в другом файле, можно импортировать модуль с помощью ключевого слова import.
Пакет - это пространство имен, содержащее несколько связанных модулей. Пакет создается путем размещения нескольких модулей в директории, которая содержит специальный файл
#теория | @PyMapChannel
Модуль - это файл с расширением .py, который содержит код на Python. В модуле можно определять функции, классы, переменные и другие элементы программы. Для использования функций или классов из модуля в другом файле, можно импортировать модуль с помощью ключевого слова import.
Пакет - это пространство имен, содержащее несколько связанных модулей. Пакет создается путем размещения нескольких модулей в директории, которая содержит специальный файл
__init.py__
. Пакеты помогают структурировать большие проекты на Python, делая код более организованным и легким для управления.#теория | @PyMapChannel
💯1
Замыкания
Замыкание – это функция, которая сохраняет доступ к переменным из внешней функции (нелокальной области видимости), даже после того как выполнение этой функции завершено.
Как правило, замыкания используются для создания декораторов (функций-оберток), которые могут изменять поведение других функций.
#теория | @PyMapChannel
Замыкание – это функция, которая сохраняет доступ к переменным из внешней функции (нелокальной области видимости), даже после того как выполнение этой функции завершено.
Как правило, замыкания используются для создания декораторов (функций-оберток), которые могут изменять поведение других функций.
#теория | @PyMapChannel
PEP8
PEP 8 (Python Enhancement Proposal 8) – это стандарт стиля кодирования для языка Python.
Он определяет правила оформления кода, именования переменных, расстановки пробелов и другие соглашения, которые делают код более читаемым и понятным.
#теория | @PyMapChannel
PEP 8 (Python Enhancement Proposal 8) – это стандарт стиля кодирования для языка Python.
Он определяет правила оформления кода, именования переменных, расстановки пробелов и другие соглашения, которые делают код более читаемым и понятным.
Соблюдение PEP 8 важно для единообразия кода в проекте, удобства совместной работы и последующей поддержки программы.
#теория | @PyMapChannel
👍7
Кортеж (tuple)
Кортеж – это неизменяемая упорядоченная коллекция элементов. Он создается с использованием круглых скобок и может содержать любые типы данных. Кортеж похож на список, но он является неизменяемым типом (после создания кортежа хранимые в нем значения нельзя удалять или изменить).
Кортежи удобно использовать, когда нужно создать набор значений, которые не должны изменяться в процессе выполнения программы. А также они работаю быстрее списков.
#типы_данных | @PyMapChannel
Кортеж – это неизменяемая упорядоченная коллекция элементов. Он создается с использованием круглых скобок и может содержать любые типы данных. Кортеж похож на список, но он является неизменяемым типом (после создания кортежа хранимые в нем значения нельзя удалять или изменить).
Кортежи удобно использовать, когда нужно создать набор значений, которые не должны изменяться в процессе выполнения программы. А также они работаю быстрее списков.
#типы_данных | @PyMapChannel
👍1
Утиная типизация
Утиная типизация – это концепция, характерная для языков программирования с динамической типизацией, позволяющая использовать объекты независимо от их типа, базируясь на их свойствах и методах.
Такой подход добавляет гибкости коду, позволяя легче расширять и изменять код, позволяет полиморфно работать с объектами, которые никак не связаны друг с другом.
#теория | @PyMapChannel
Утиная типизация – это концепция, характерная для языков программирования с динамической типизацией, позволяющая использовать объекты независимо от их типа, базируясь на их свойствах и методах.
Основная идея: при работе с объектом его тип не проверяется, вместо этого проверяются свойства и методы этого объекта.
Такой подход добавляет гибкости коду, позволяя легче расширять и изменять код, позволяет полиморфно работать с объектами, которые никак не связаны друг с другом.
#теория | @PyMapChannel
👍3❤1
Итератор
Итератор – это объект, который способен возвращать элементы по одному за раз.
В частности генератор является подтипом итератора (но не наоборот).
#теория | @PyMapChannel
Итератор – это объект, который способен возвращать элементы по одному за раз.
Для этого объект должен реализовать метод __next__(), который возвращает следующий элемент. Когда элементы закончились, он должен вызывать исключение StopIteration. Также этот объект имеет состояние и запоминает, где он находится во время итерации.
В частности генератор является подтипом итератора (но не наоборот).
#теория | @PyMapChannel
Пакетный менеджер pip
PIP – это стандартный пакетный менеджер для установки и управления библиотеками и пакетами Python. Он позволяет легко устанавливать, обновлять, удалять и управлять зависимостями Python-проектов.
Вот некоторые основные команды pip:
Установка пакета:
Обновление пакета до последней версии:
Удаление пакета:
Просмотр установленных пакетов:
Установка нужной версии пакета:
PIP также поддерживает различные другие опции и флаги для управления пакетами и их зависимостями.
#теория | @PyMapChannel
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
Итерируемый объект
Итерируемый объект – это любой объект, реализующий метод
Ниже перечислены некоторые из наиболее распространенных итерируемых объектов:
● кортежи;
● списки;
● строки;
● множества;
● словари;
● файлы;
● генераторы;
#теория | @PyMapChannel
Итерируемый объект – это любой объект, реализующий метод
iter() или
getitem().
Цель итерируемого объекта – создать итератор. Для этого есть функция iter().
Ниже перечислены некоторые из наиболее распространенных итерируемых объектов:
● кортежи;
● списки;
● строки;
● множества;
● словари;
● файлы;
● генераторы;
#теория | @PyMapChannel
👍2
Строковые литералы
Строковые литералы – это представление строки, как фиксированной последовательности символов в коде, в то время как строка – это объект данных в Python, который содержит последовательность символов.
Символ обратной косой черты (\) используется для экранирования управляющих символов (например \n).
Строки могут начинаться с префиксов:
• r или R для создания необработанных (сырых) строк, которые обрабатывают обратную косую черту как символ литерала;
• u или U – устаревший литерал Юникода для упрощения обслуживания двух кодовых баз Python-2.x и Python-3.x;
• f или F для создания форматированных строк.
#теория | @PyMapChannel
Строковые литералы – это представление строки, как фиксированной последовательности символов в коде, в то время как строка – это объект данных в 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
Метод словаря dict.get() вернет значение по умолчанию (если оно задано), или None, если значение по умолчанию не указано.
Обращение по ключу dict[key] вызовет исключение KeyError, если нужного ключа нет в словаре.
Таким образом, метод get() в словарях предоставляет безопасный способ получения значения по ключу, предотвращая возможные ошибки.
#теория #это_база | @PyMapChannel
🔥5
Байтовые объекты
Байтовые объекты представляют собой последовательность байтов, которая хранит информацию в двоичном формате.
В Python байтовые объекты представлены типами данных bytes и bytearray. Различие заключается в том, что bytes является неизменяемым типом данных, в то время как bytearray - изменяемым.
Также в Python имеется тип данных memoryview, предоставляющий доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.
Для создания байтовых объектов можно использовать байтовые литералы (синтаксис схож со строковыми литералами, за исключением того, что добавляется префикс "b").
В Python также существует модуль struct, который позволяет работать с байтовыми данными на низком уровне, осуществляя их упаковку и распаковку.
#теория | @PyMapChannel
Байтовые объекты представляют собой последовательность байтов, которая хранит информацию в двоичном формате.
В Python байтовые объекты представлены типами данных bytes и bytearray. Различие заключается в том, что bytes является неизменяемым типом данных, в то время как bytearray - изменяемым.
Также в Python имеется тип данных memoryview, предоставляющий доступ к внутренним данным объекта, который поддерживает буферный протокол, без копирования.
Для создания байтовых объектов можно использовать байтовые литералы (синтаксис схож со строковыми литералами, за исключением того, что добавляется префикс "b").
В Python также существует модуль struct, который позволяет работать с байтовыми данными на низком уровне, осуществляя их упаковку и распаковку.
Эти объекты часто используются для работы с бинарными файлами, сетевыми пакетами и другими данными, которые нужно представить в виде последовательности байтов.
#теория | @PyMapChannel
❤5
Модуль os
Предустановленный модуль os в Python предоставляет инструменты для взаимодействия с операционной системой.
С его помощью можно выполнять множество задач, таких как управление файлами и директориями, работа с процессами, а также получение информации о системе. Модуль также поддерживает работу с путями файловой системы через интерфейс os.PathLike, что делает его удобным для создания кросс-платформенных скриптов.
#теория | @PyMapChannel
Предустановленный модуль os в Python предоставляет инструменты для взаимодействия с операционной системой.
С его помощью можно выполнять множество задач, таких как управление файлами и директориями, работа с процессами, а также получение информации о системе. Модуль также поддерживает работу с путями файловой системы через интерфейс os.PathLike, что делает его удобным для создания кросс-платформенных скриптов.
Вот некоторые из основных функций модуля:
функция listdir()
функции getcwd() и getcwdb()
#теория | @PyMapChannel
👍3
Последовательность и коллекция в Python
Последовательности и коллекции являются ключевые понятиями в Python, служащими для структурирования и хранения информации.
Последовательность – это итерируемый объект, к элементам которого можно обратиться по целочисленному индексу.
Коллекция – это структура данных, которая позволяет хранить и управлять набором элементов. В отличие от последовательностей, элементы в коллекции могут быть неупорядоченными, и могут быть изменяемыми или обеспечивать быстрый поиск по ключу.
Таким образом, все последовательности являются коллекциями, но не все коллекции являются последовательностями.
#теория | @PyMapChannel
Последовательности и коллекции являются ключевые понятиями в Python, служащими для структурирования и хранения информации.
Последовательность – это итерируемый объект, к элементам которого можно обратиться по целочисленному индексу.
Примеры последовательностей: строки (str), списки (list), кортежи (tuple).
Коллекция – это структура данных, которая позволяет хранить и управлять набором элементов. В отличие от последовательностей, элементы в коллекции могут быть неупорядоченными, и могут быть изменяемыми или обеспечивать быстрый поиск по ключу.
Примеры коллекций: словари (dict), множества (set, frozenset), в то же время и последовательности: строки (str), списки (list), кортежи (tuple).
Таким образом, все последовательности являются коллекциями, но не все коллекции являются последовательностями.
#теория | @PyMapChannel
👍3
«Странное» поведение % в Python
Иногда это может давать «странный» результат при работе с отрицательными числами.
К примеру, сколько будет
В ответе будет:3 # вместо ожидаемого -1
Объяснение:
В Python оператор
Для вопроса выше выше:
В то время как другие языки используют усечение (int), вместо округления вниз (math.floor):
Что приводит к:
Ставьте «❤️»
#теория | @PyMapChannel
В отличие от C, Java или JS, оператор остатка от деления нацело % в Python всегда возвращает число, имеющее тот же знак, что и делитель.
Иногда это может давать «странный» результат при работе с отрицательными числами.
К примеру, сколько будет
-5 % 4
?В ответе будет:
Объяснение:
В 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 мы можем вычислять с помощью:
Но в C, если N ≥ 3, мы получаем отрицательное число, которое является недопустимым числом, и нам нужно вручную исправить это, добавив 7:
#теория | @PyMapChannel
Примером может служить вычисление дней недели. Если сегодня вторник (день № 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 атрибуты и методы класса хранятся в специальном словаре, называемом
Кроме того, каждый экземпляр класса имеет свой собственный
🐍 Python Map | Обучение | #теория
В Python атрибуты и методы класса хранятся в специальном словаре, называемом
__dict__
. Этот словарь является атрибутом класса и позволяет хранить все его атрибуты и методы в формате пар "ключ-значение". Каждый ключ соответствует имени атрибута или метода, а значение представляет собой сам объект.Кроме того, каждый экземпляр класса имеет свой собственный
__dict__
, в котором хранятся атрибуты, специфичные для данного объекта. Это позволяет различным экземплярам одного класса иметь уникальные значения своих атрибутов, при этом общие методы и атрибуты класса остаются доступны для всех объектов.🐍 Python Map | Обучение | #теория
❤5👍1
Паттерны проектирования
Паттерны (шаблоны) проектирования — это проверенные решения для распространенных проблем в разработке программного обеспечения. Они упрощают проектирование и улучшают читаемость кода. Основные паттерны:
- Singleton (Одиночка): Обеспечивает единственный экземпляр класса с глобальной точкой доступа.
- Factory (Фабрика): Определяет интерфейс для создания объектов, позволяя изменять тип создаваемых объектов.
- Observer (Наблюдатель): Устанавливает зависимость "один ко многим", уведомляя зависимые объекты об изменениях.
- Strategy (Стратегия): Инкапсулирует семейство алгоритмов, позволяя их взаимозаменяемость.
🐍 Python Map | Обучение | #теория
Паттерны (шаблоны) проектирования — это проверенные решения для распространенных проблем в разработке программного обеспечения. Они упрощают проектирование и улучшают читаемость кода. Основные паттерны:
- Singleton (Одиночка): Обеспечивает единственный экземпляр класса с глобальной точкой доступа.
- Factory (Фабрика): Определяет интерфейс для создания объектов, позволяя изменять тип создаваемых объектов.
- Observer (Наблюдатель): Устанавливает зависимость "один ко многим", уведомляя зависимые объекты об изменениях.
- Strategy (Стратегия): Инкапсулирует семейство алгоритмов, позволяя их взаимозаменяемость.
🐍 Python Map | Обучение | #теория
👍2