__init__
Когда вы создаете новый объект путем вызова конструктора класса, передавая ему аргументы, эти аргументы могут быть использованы для установки начальных значений атрибутов объекта. Внутри метода
#для_начинающих
__init__
является методом, который используется для инициализации объектов при создании экземпляров классов. Этот метод называется «конструктором» класса и выполняется автоматически при создании нового объекта данного класса.Когда вы создаете новый объект путем вызова конструктора класса, передавая ему аргументы, эти аргументы могут быть использованы для установки начальных значений атрибутов объекта. Внутри метода
__init__
вы можете определить, какие атрибуты должны быть созданы для объекта и как им присвоены начальные значения.#для_начинающих
👍14🎉2🗿1
Паттерн проектирования «Фасад»
Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.
#для_продвинутых
Паттерн проектирования «Фасад» (Facade) используется для предоставления унифицированного интерфейса к группе интерфейсов подсистемы. Он позволяет скрыть сложность и детали взаимодействия между различными компонентами системы, предоставляя клиенту более простой и удобный способ взаимодействия.
#для_продвинутых
👍20❤4
dict comprehension
#для_начинающих
dict comprehension
— это способ создания нового словаря путем применения выражения к каждому элементу другой последовательности, такой как список, кортеж или другой словарь. Это похоже на генератор списков, но результатом является словарь вместо списка.#для_начинающих
👍15
Цикломатическая сложность
Цикломатическая сложность (Cyclomatic Complexity) — это метрика, используемая для оценки сложности кода на основе количества путей выполнения в программе. Эта метрика была предложена Томасом МакКейбом в 1976 году и обычно используется для определения того, насколько сложно будет тестирование и сопровождение данного кода.
Целью расчета цикломатической сложности является выявление потенциально сложных участков кода, которые могут быть трудными для понимания, тестирования и поддержки. Более высокая цифра цикломатической сложности обычно указывает на большую сложность кода.
#для_продвинутых
Цикломатическая сложность (Cyclomatic Complexity) — это метрика, используемая для оценки сложности кода на основе количества путей выполнения в программе. Эта метрика была предложена Томасом МакКейбом в 1976 году и обычно используется для определения того, насколько сложно будет тестирование и сопровождение данного кода.
Целью расчета цикломатической сложности является выявление потенциально сложных участков кода, которые могут быть трудными для понимания, тестирования и поддержки. Более высокая цифра цикломатической сложности обычно указывает на большую сложность кода.
#для_продвинутых
👍10🎉1
SciencePlots
Это может быть полезно для ученых, инженеров, студентов и любого, кто хочет создавать профессионально выглядящие графики в Python.
В этом примере мы устанавливаем стиль
SciencePlots
- это библиотека, которая предоставляет стили для библиотеки Matplotlib
, чтобы форматировать ваши графики для научных статей, презентаций и диссертаций. Это может быть полезно для ученых, инженеров, студентов и любого, кто хочет создавать профессионально выглядящие графики в Python.
В этом примере мы устанавливаем стиль
'science'
из библиотеки scienceplots
. Затем мы создаем данные для графика и строим график. В конце мы отображаем график с помощью plt.show()
.👍9🔥1🗿1
Контекстные менеджеры
Контекстные менеджеры (Context Managers) в Python представляют собой удобный способ для управления ресурсами и выполнения кода в определенных контекстах, таких как открытие и закрытие файлов, установка и освобождение блокировок, управление сетевыми соединениями и многие другие ситуации, требующие выполнения предварительных и завершающих операций.
Для создания своего собственного контекстного менеджера вам потребуется определить методы
#для_начинающих
Контекстные менеджеры (Context Managers) в Python представляют собой удобный способ для управления ресурсами и выполнения кода в определенных контекстах, таких как открытие и закрытие файлов, установка и освобождение блокировок, управление сетевыми соединениями и многие другие ситуации, требующие выполнения предварительных и завершающих операций.
Для создания своего собственного контекстного менеджера вам потребуется определить методы
__enter__()
и __exit__()
в вашем классе. Метод __enter__()
выполняется при входе в контекст, а метод __exit__()
выполняется при выходе из контекста.#для_начинающих
👍13
__slots__
Обычно, когда вы создаете экземпляр класса, Python создает словарь для хранения всех атрибутов этого экземпляра. Это занимает дополнительную память и может вызвать небольшое замедление при доступе к атрибутам. А использование
#для_продвинутых
__slots__
— это специальный атрибут в Python, который может использоваться в классах для определения списка атрибутов (полей), которые разрешено создавать для экземпляров этого класса. Он используется для оптимизации использования памяти и ускорения доступа к атрибутам.Обычно, когда вы создаете экземпляр класса, Python создает словарь для хранения всех атрибутов этого экземпляра. Это занимает дополнительную память и может вызвать небольшое замедление при доступе к атрибутам. А использование
slots
позволяет определить, какие атрибуты можно создавать для экземпляров класса, и Python будет использовать более компактное представление данных, что уменьшит расход памяти.#для_продвинутых
👍15❤2
Что такое args?
args — это сокращение от «arguments» (аргументы). Этот термин обычно используется в контексте определения функций с переменным числом аргументов.
Когда вы определяете функцию с *args в списке аргументов, это означает, что функция может принимать произвольное количество позиционных аргументов. args представляет собой кортеж (tuple), содержащий все переданные позиционные аргументы.
#для_начинающих
args — это сокращение от «arguments» (аргументы). Этот термин обычно используется в контексте определения функций с переменным числом аргументов.
Когда вы определяете функцию с *args в списке аргументов, это означает, что функция может принимать произвольное количество позиционных аргументов. args представляет собой кортеж (tuple), содержащий все переданные позиционные аргументы.
#для_начинающих
👍18❤1
Аннотации типов
Аннотации типов (type annotations) — это способ указания ожидаемых типов данных для аргументов функций, возвращаемых значений функций и переменных. Они позволяют явно указать, какие типы данных ожидаются или возвращаются, и могут быть использованы инструментами статического анализа для проверки соответствия типов.
Важно понимать, что аннотации типов являются средством документирования и помощи в статическом анализе, но они не влияют на реальное выполнение кода.
#для_начинающих
Аннотации типов (type annotations) — это способ указания ожидаемых типов данных для аргументов функций, возвращаемых значений функций и переменных. Они позволяют явно указать, какие типы данных ожидаются или возвращаются, и могут быть использованы инструментами статического анализа для проверки соответствия типов.
Важно понимать, что аннотации типов являются средством документирования и помощи в статическом анализе, но они не влияют на реальное выполнение кода.
#для_начинающих
👍12❤1🎉1
Сортировка пузырьком
Сортировка пузырьком (Bubble Sort) — это простой алгоритм сортировки, который многократно проходит через список, сравнивая пары соседних элементов и меняя их местами, если они стоят в неправильном порядке. Этот процесс повторяется до тех пор, пока весь список не будет отсортирован.
В данном коде функция
#для_продвинутых
Сортировка пузырьком (Bubble Sort) — это простой алгоритм сортировки, который многократно проходит через список, сравнивая пары соседних элементов и меняя их местами, если они стоят в неправильном порядке. Этот процесс повторяется до тех пор, пока весь список не будет отсортирован.
В данном коде функция
bubble_sort
принимает список arr
, который нужно отсортировать. Основной цикл проходит по всем элементам списка, а вложенный цикл сравнивает соседние элементы и меняет их местами, если это необходимо. После завершения алгоритма, список будет отсортирован.#для_продвинутых
👍22🗿9🎉1
Cтатический метод
В Python статический метод (staticmethod) — это метод, который привязан к классу, а не к экземпляру этого класса. Он не требует доступа к атрибутам и методам экземпляра, и может быть вызван независимо от создания экземпляра класса. Статические методы могут использоваться, например, для выполнения операций, которые связаны с классом в целом, но не требуют доступа к данным экземпляра.
Чтобы определить статический метод в классе, используется декоратор
#для_начинающих
В Python статический метод (staticmethod) — это метод, который привязан к классу, а не к экземпляру этого класса. Он не требует доступа к атрибутам и методам экземпляра, и может быть вызван независимо от создания экземпляра класса. Статические методы могут использоваться, например, для выполнения операций, которые связаны с классом в целом, но не требуют доступа к данным экземпляра.
Чтобы определить статический метод в классе, используется декоратор
@staticmethod
.#для_начинающих
👍12❤1🎉1
«Циклический сбор мусора»
«Циклический сбор мусора» — это процесс автоматической уборки памяти, занимаемой объектами, которые больше не доступны вашей программе. В Python есть встроенный механизм сборки мусора, который автоматически освобождает память, занимаемую объектами, на которые нет ссылок.
Вы можете влиять на этот процесс с помощью модуля gc (garbage collector).
Обычно нет необходимости вручную управлять сборкой мусора, так как Python самостоятельно заботится о освобождении памяти. Однако в некоторых случаях, особенно при работе с большими объемами данных или встроенными объектами, ручное управление сборкой мусора может быть полезным.
#для_продвинутых
«Циклический сбор мусора» — это процесс автоматической уборки памяти, занимаемой объектами, которые больше не доступны вашей программе. В Python есть встроенный механизм сборки мусора, который автоматически освобождает память, занимаемую объектами, на которые нет ссылок.
Вы можете влиять на этот процесс с помощью модуля gc (garbage collector).
Обычно нет необходимости вручную управлять сборкой мусора, так как Python самостоятельно заботится о освобождении памяти. Однако в некоторых случаях, особенно при работе с большими объемами данных или встроенными объектами, ручное управление сборкой мусора может быть полезным.
#для_продвинутых
👍17🎉4
unit-тесты
Unit-тесты (или unittests) — это метод тестирования ПО, который позволяет проверить, работает ли отдельная единица кода (обычно функция или метод) так, как ожидается. Библиотека
Писать хорошие unit-тесты — это важный аспект разработки программного обеспечения. Хорошие тесты обеспечивают надежность и поддерживаемость кода, помогают выявлять ошибки и улучшать качество продукта.
#для_начинающих
Unit-тесты (или unittests) — это метод тестирования ПО, который позволяет проверить, работает ли отдельная единица кода (обычно функция или метод) так, как ожидается. Библиотека
unittest
входит в стандартную библиотеку Python и предоставляет набор инструментов для написания и выполнения тестовых сценариев.Писать хорошие unit-тесты — это важный аспект разработки программного обеспечения. Хорошие тесты обеспечивают надежность и поддерживаемость кода, помогают выявлять ошибки и улучшать качество продукта.
#для_начинающих
🎉9👍4❤1🔥1
Паттерн проектирования «Стратегия»
«Стратегия» (Strategy) является одним из шаблонов поведения, определенных в книге «Банды четырёх» (Gang of Four, GoF). Этот паттерн относится к категории поведенческих паттернов и решает задачу определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет клиентскому коду выбирать нужный алгоритм независимо от его использования.
Основная идея паттерна «Стратегия» заключается в выделении алгоритмов в отдельные классы (стратегии) и предоставлении клиентскому коду возможности выбирать и подменять эти стратегии без изменения самого клиентского кода. Таким образом, паттерн способствует легкости поддержки, расширения и внесения изменений в систему.
#для_продвинутых
«Стратегия» (Strategy) является одним из шаблонов поведения, определенных в книге «Банды четырёх» (Gang of Four, GoF). Этот паттерн относится к категории поведенческих паттернов и решает задачу определения семейства алгоритмов, инкапсуляции каждого из них и обеспечения их взаимозаменяемости. Это позволяет клиентскому коду выбирать нужный алгоритм независимо от его использования.
Основная идея паттерна «Стратегия» заключается в выделении алгоритмов в отдельные классы (стратегии) и предоставлении клиентскому коду возможности выбирать и подменять эти стратегии без изменения самого клиентского кода. Таким образом, паттерн способствует легкости поддержки, расширения и внесения изменений в систему.
#для_продвинутых
👍13🎉2
👍14🤔4❤1
memory_profiler
Для использования
#для_начинающих
memory_profiler
— это сторонний модуль для языка программирования Python, который предоставляет инструменты для профилирования использования памяти в ваших программах. Этот модуль позволяет отслеживать изменения объема памяти во время выполнения кода, выявлять утечки памяти и оптимизировать использование памяти.Для использования
memory_profiler
вы должны установить его сначала. Это можно сделать с помощью инструмента установки пакетов Python, такого как pip
.#для_начинающих
👍10🎉1
Acceptance Testing
Acceptance Testing — это процесс тестирования программного обеспечения, который направлен на проверку того, соответствует ли разработанное ПО заявленным требованиям и ожиданиям заказчика или пользователей. Это более высокий уровень тестирования, который выполняется после завершения разработки и интеграции всех компонентов системы.
Основной целью Acceptance Testing является убедиться, что ПО работает в соответствии с функциональными и нефункциональными требованиями, установленными для проекта.
#для_начинающих
Acceptance Testing — это процесс тестирования программного обеспечения, который направлен на проверку того, соответствует ли разработанное ПО заявленным требованиям и ожиданиям заказчика или пользователей. Это более высокий уровень тестирования, который выполняется после завершения разработки и интеграции всех компонентов системы.
Основной целью Acceptance Testing является убедиться, что ПО работает в соответствии с функциональными и нефункциональными требованиями, установленными для проекта.
#для_начинающих
👍7🎉1
Компрехеншен
Компрехеншен (comprehension) — это синтаксический конструкт, который позволяет создавать новые структуры данных (например, списки, множества, словари) путем итерации по другой последовательности (например, списку или диапазону чисел) и применения некоторого выражения или логики к каждому элементу этой последовательности.
В Python существует несколько видов компрехеншенов: списковые компрехеншены (List comprehensions), множественные компрехеншены (Set comprehensions) и словарные компрехеншены (Dictionary comprehensions).
#для_начинающих
Компрехеншен (comprehension) — это синтаксический конструкт, который позволяет создавать новые структуры данных (например, списки, множества, словари) путем итерации по другой последовательности (например, списку или диапазону чисел) и применения некоторого выражения или логики к каждому элементу этой последовательности.
В Python существует несколько видов компрехеншенов: списковые компрехеншены (List comprehensions), множественные компрехеншены (Set comprehensions) и словарные компрехеншены (Dictionary comprehensions).
#для_начинающих
👍18🎉2
Расстояние Левенштейна
Расстояние Левенштейна (также известное как редакционное расстояние или расстояние редактирования) в программировании представляет собой метрику, которая измеряет различие между двумя строками в терминах минимального количества редакционных операций (вставок, удалений и замен символов), необходимых для преобразования одной строки в другую.
На практике расстояние Левенштейна может быть использовано для оценки схожести или различия между строками, например, для определения степени схожести в поиске похожих слов, исправления опечаток или сравнения генетических последовательностей.
#для_продвинутых
Расстояние Левенштейна (также известное как редакционное расстояние или расстояние редактирования) в программировании представляет собой метрику, которая измеряет различие между двумя строками в терминах минимального количества редакционных операций (вставок, удалений и замен символов), необходимых для преобразования одной строки в другую.
На практике расстояние Левенштейна может быть использовано для оценки схожести или различия между строками, например, для определения степени схожести в поиске похожих слов, исправления опечаток или сравнения генетических последовательностей.
#для_продвинутых
👍14🥰2❤1🆒1