🧑💻 Пропуск начала итерируемого объекта в Python
Иногда нужно работать с файлом, который, как заранее известно, начинается с некоторого числа ненужных строк — вроде строк с комментариями. Для того чтобы пропустить эти строки, можно, снова, прибегнуть к возможностям itertools.
Продолжение следует...
Clean Code #совет #Python #cleancode
Иногда нужно работать с файлом, который, как заранее известно, начинается с некоторого числа ненужных строк — вроде строк с комментариями. Для того чтобы пропустить эти строки, можно, снова, прибегнуть к возможностям itertools.
Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Пропуск начала итерируемого объекта в Python
...Этот код выдаёт лишь строки, находящиеся после блока комментариев, расположенного в начале файла. Такой подход может быть полезен тогда, когда нужно отбросить лишь элементы (в нашем случае — строки) в начале итерируемого объекта, но при этом точное их количество неизвестно.
Продолжение следует...
Clean Code #совет #Python #cleancode
...Этот код выдаёт лишь строки, находящиеся после блока комментариев, расположенного в начале файла. Такой подход может быть полезен тогда, когда нужно отбросить лишь элементы (в нашем случае — строки) в начале итерируемого объекта, но при этом точное их количество неизвестно.
Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Функции, поддерживающие только именованные аргументы (kwargs)
...Для того чтобы при использовании некоей функции сделать так, чтобы ей можно было бы передавать только именованные аргументы, можно поступить следующим образом: см. код.
Продолжение следует...
Clean Code #совет #cleancode
...Для того чтобы при использовании некоей функции сделать так, чтобы ей можно было бы передавать только именованные аргументы, можно поступить следующим образом: см. код.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Функции, поддерживающие только именованные аргументы (kwargs)
...Это может быть полезно для того, чтобы улучшить понятность кода. Как видите, наша задача легко решается при помощи использования аргумента * перед списком именованных аргументов. Здесь, что вполне очевидно, можно использовать и позиционные аргументы — в том случае, если поместить их до аргумента *.
Продолжение следует...
Clean Code #совет #cleancode
...Это может быть полезно для того, чтобы улучшить понятность кода. Как видите, наша задача легко решается при помощи использования аргумента * перед списком именованных аргументов. Здесь, что вполне очевидно, можно использовать и позиционные аргументы — в том случае, если поместить их до аргумента *.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Создание объектов, поддерживающих выражение with
...Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками? Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов
Продолжение следует...
Clean Code #совет #cleancode
...Все знают о том, как, например, открыть файл, или, возможно, как установить блокировку с использованием оператора with. Но можно ли самостоятельно реализовать механизм управления блокировками? Да, это вполне реально. Протокол управления контекстом исполнения реализуется с использованием методов
enter и exit.Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Создание объектов, поддерживающих выражение with
...Код 1 — наиболее распространённый способ реализации возможностей менеджера контекста в Python, но то же самое можно сделать и проще: см. код 2.
Здесь протокол управления контекстом реализован с использованием декоратора contextmanager. Первая часть функции tag (до yield) выполняется при входе в блок with. Затем выполняется сам этот блок, а после этого выполняется оставшаяся часть функции tag.
Продолжение следует...
Clean Code #совет #Python #cleancode
...Код 1 — наиболее распространённый способ реализации возможностей менеджера контекста в Python, но то же самое можно сделать и проще: см. код 2.
Здесь протокол управления контекстом реализован с использованием декоратора contextmanager. Первая часть функции tag (до yield) выполняется при входе в блок with. Затем выполняется сам этот блок, а после этого выполняется оставшаяся часть функции tag.
Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Экономия памяти с помощью __slots__
Если вы когда-нибудь писали программы, которые создают по-настоящему большие количества экземпляров некоего класса, то вы могли заметить, что таким программам неожиданно может понадобиться очень много памяти. Происходит это из-за того, что Python использует словари для представления атрибутов экземпляров классов. Это хорошо сказывается на производительности, но, с точки зрения потребления памяти, это неэффективно. Обычно, правда, проблем эта особенность не вызывает. Однако если вы столкнулись в подобной ситуации с нехваткой памяти — можете попробовать воспользоваться атрибутом __slots__.
Продолжение следует...
Clean Code #совет #Python #cleancode
Если вы когда-нибудь писали программы, которые создают по-настоящему большие количества экземпляров некоего класса, то вы могли заметить, что таким программам неожиданно может понадобиться очень много памяти. Происходит это из-за того, что Python использует словари для представления атрибутов экземпляров классов. Это хорошо сказывается на производительности, но, с точки зрения потребления памяти, это неэффективно. Обычно, правда, проблем эта особенность не вызывает. Однако если вы столкнулись в подобной ситуации с нехваткой памяти — можете попробовать воспользоваться атрибутом __slots__.
Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Экономия памяти с помощью __slots__
...Здесь, когда мы объявляем атрибут
Продолжение следует...
Clean Code #совет #Python #cleancode
...Здесь, когда мы объявляем атрибут
__slots__, Python использует для хранения атрибутов не словарь, а маленький массив фиксированного размера. Это серьёзно сокращает объём памяти, необходимый для каждого из экземпляров класса. У применения атрибута __slots__ есть и некоторые недостатки. Так, пользуясь им, мы не можем объявлять новые атрибуты, мы ограничены только теми, которые имеются в __slots__. Кроме того, классы c атрибутом __slots__ не могут использовать множественное наследование.Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Ограничение использования процессора и памяти
Если вместо того, чтобы оптимизировать программу, или улучшить то, как она пользуется процессором, вам нужно просто задать жёсткое ограничение на доступные ей ресурсы, можно воспользоваться соответствующей библиотекой resource.
Продолжение следует...
Clean Code #совет #cleancode
Если вместо того, чтобы оптимизировать программу, или улучшить то, как она пользуется процессором, вам нужно просто задать жёсткое ограничение на доступные ей ресурсы, можно воспользоваться соответствующей библиотекой resource.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Ограничение использования процессора и памяти
...Тут показано ограничение процессорного времени и объёма памяти. Для того чтобы ограничить использование программой процессора, мы сначала получаем значения нежёсткого (soft) и жёсткого (hard) лимитов для конкретного ресурса (RLIMIT_CPU). Затем мы устанавливаем лимит, используя некое число секунд, задаваемое аргументом seconds, и ранее полученное значение жёсткого лимита. После этого мы регистрируем обработчик signal, который, при превышении выделенного программе процессорного времени, инициирует процедуру выхода. В случае с памятью, мы, опять же, получаем значения для нежёсткого и жёсткого лимитов, после чего устанавливаем ограничение с помощью метода setrlimit, которому передаём размер ограничения (size) и ранее полученное значение жёсткого лимита.
Clean Code #совет #cleancode
...Тут показано ограничение процессорного времени и объёма памяти. Для того чтобы ограничить использование программой процессора, мы сначала получаем значения нежёсткого (soft) и жёсткого (hard) лимитов для конкретного ресурса (RLIMIT_CPU). Затем мы устанавливаем лимит, используя некое число секунд, задаваемое аргументом seconds, и ранее полученное значение жёсткого лимита. После этого мы регистрируем обработчик signal, который, при превышении выделенного программе процессорного времени, инициирует процедуру выхода. В случае с памятью, мы, опять же, получаем значения для нежёсткого и жёсткого лимитов, после чего устанавливаем ограничение с помощью метода setrlimit, которому передаём размер ограничения (size) и ранее полученное значение жёсткого лимита.
Clean Code #совет #cleancode
🧑💻 Управление тем, что может быть импортировано из модуля, а что — нет
В некоторых языках имеются предельно чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. Например — в Golang экспортируются лишь сущности, имена которых начинаются с большой буквы. В Python же экспортируется всё. Но лишь до тех пор, пока не используется атрибут __all__.
Продолжение следует...
Clean Code #совет #Python #cleancode
В некоторых языках имеются предельно чёткие механизмы экспорта из модулей переменных, методов, интерфейсов. Например — в Golang экспортируются лишь сущности, имена которых начинаются с большой буквы. В Python же экспортируется всё. Но лишь до тех пор, пока не используется атрибут __all__.
Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Управление тем, что может быть импортировано из модуля, а что — нет
...В примере кода экспортирована будет лишь функция
Продолжение следует...
Clean Code #совет #Python #cleancode
...В примере кода экспортирована будет лишь функция
bar. А если оставить атрибут __all__ пустым, то из модуля не будет экспортироваться вообще ничего. При попытке импорта чего-либо из такого модуля будет выдана ошибка AttributeError.Продолжение следует...
Clean Code #совет #Python #cleancode
🧑💻 Упрощение создания операторов сравнения
Существует немало операторов сравнения. Например — __lt__, __le__, __gt__, __ge__. Мало кому понравится перспектива их реализации для некоего класса. Можно ли как-то упростить эту скучную задачу? Да, можно — с помощь декоратора functools.total_ordering.
Продолжение следует...
Clean Code #совет #cleancode
Существует немало операторов сравнения. Например — __lt__, __le__, __gt__, __ge__. Мало кому понравится перспектива их реализации для некоего класса. Можно ли как-то упростить эту скучную задачу? Да, можно — с помощь декоратора functools.total_ordering.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Упрощение создания операторов сравнения
...Декоратор functools.total_ordering используется здесь для упрощения процесса реализации упорядочения экземпляров класса. Для обеспечения его работы нужно лишь чтобы были объявлены операторы сравнения lt и eq. Это — тот минимум, который нужен декоратору для конструирования остальных операторов сравнения.
Продолжение следует...
Clean Code #совет #cleancode #python
...Декоратор functools.total_ordering используется здесь для упрощения процесса реализации упорядочения экземпляров класса. Для обеспечения его работы нужно лишь чтобы были объявлены операторы сравнения lt и eq. Это — тот минимум, который нужен декоратору для конструирования остальных операторов сравнения.
Продолжение следует...
Clean Code #совет #cleancode #python
🧑💻 Комментируйте при необходимости, но не постоянно
...Примером служит комментарий (на картинке) из кодовой базы фреймворка Electron на GitHub.
Однако излишние комментарии могут усложнить код. Вот почему многие программисты, как правило, не пишут Javadoc.
Продолжение следует...
Clean Code #совет #cleancode
...Примером служит комментарий (на картинке) из кодовой базы фреймворка Electron на GitHub.
Однако излишние комментарии могут усложнить код. Вот почему многие программисты, как правило, не пишут Javadoc.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Используйте единые правила форматирования
В процессе форматирования кода программисты часто пользуются различными методами. Некоторые включают автоформатирование. А другие любят делать это вручную. Форматирование кода характеризует стиль его написания. Другими словами, оно показывает, как программист руководствуется синтаксисом языка, как структурирует исходный код с помощью пробелов и разбиения на строки. Набор правил для форматирования кода определяет используемый стиль.
Продолжение следует...
Clean Code #совет #cleancode
В процессе форматирования кода программисты часто пользуются различными методами. Некоторые включают автоформатирование. А другие любят делать это вручную. Форматирование кода характеризует стиль его написания. Другими словами, оно показывает, как программист руководствуется синтаксисом языка, как структурирует исходный код с помощью пробелов и разбиения на строки. Набор правил для форматирования кода определяет используемый стиль.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Используйте единые правила форматирования
...Посмотрите, как разбивка с помощью строк и пробелов меняет ситуацию. Более того, если добавить между операторами несколько пустых строк, чтобы концептуально сгруппировать логику, то другим программистам будет легче разобраться в сегменте кода, который нужно изменить или изучить.
Продолжение следует...
Clean Code #совет #cleancode
...Посмотрите, как разбивка с помощью строк и пробелов меняет ситуацию. Более того, если добавить между операторами несколько пустых строк, чтобы концептуально сгруппировать логику, то другим программистам будет легче разобраться в сегменте кода, который нужно изменить или изучить.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Написание чистого кода
Поддерживать чистоту кода необходимо в каждом проекте. Все языки программирования и фреймворки мотивируют использовать четко сформулированные соглашения или методы присвоения имен. Крупные технологические компании создают собственные руководства по стилю, чтобы гарантировать качество баз кода.
Продолжение следует...
Clean Code #совет #cleancode
Поддерживать чистоту кода необходимо в каждом проекте. Все языки программирования и фреймворки мотивируют использовать четко сформулированные соглашения или методы присвоения имен. Крупные технологические компании создают собственные руководства по стилю, чтобы гарантировать качество баз кода.
Продолжение следует...
Clean Code #совет #cleancode
🧑💻 Написание чистого кода
...Крупные технологические компании создают собственные руководства по стилю, чтобы гарантировать качество баз кода:
— руководство от Google для многих языков;
— руководство от Airbnb для JavaScript.
Код будут читать компилятор и программисты. На компилятор стоит произвести впечатление оптимизированным кодом, а на других программистов — чистым.
Clean Code #совет #JavaScript #cleancode
...Крупные технологические компании создают собственные руководства по стилю, чтобы гарантировать качество баз кода:
— руководство от Google для многих языков;
— руководство от Airbnb для JavaScript.
Код будут читать компилятор и программисты. На компилятор стоит произвести впечатление оптимизированным кодом, а на других программистов — чистым.
Clean Code #совет #JavaScript #cleancode