Перейти к содержанию

Python

Почему важно закрывать файлы в Python?

Почему важно закрывать файлы в Python?

Чем чреваты файлы, своевременно не закрытые в операционной системе

При создании программного обеспечения с функциями обработки файлов, у вас всегда есть риск получения ошибки операционной системы (ОС) типа 'Too many open files'слишком много открытых файлов.

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

Генераторы списков (list comprehension) в Python

Генераторы списков (list comprehension) в Python

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

Допустим, посредством цикла for, перебирающего все элементы вышеприведенного списка list-physicians нам нужно сделать новый список выездных консультирующих специалистов - visiting-consultants, в котором специализации всех медиков прописать заглавными буквами: Затем, внутри квадратных скобок мы первым разместим ту функцию, метод или выражение, которые фактически модифицируют (изменяют) элементы старого списка, для последующего их занесения во вновь создаваемый список.

Сортировка пузырьком

Сортировка пузырьком

Сортировка пузырьком (англ.

Этот алгоритм имеет ряд более эффективных модификаций, включая широко распространенный метод быстрой сортировки (англ. quicksort). В настоящее время пузырьковая сортировка используется только для исправления почти отсортированных массивов, в которых единичные элементы могут быть не на своих местах.

Архитектура проекта Pylot.me

Архитектура проекта Pylot.me

Рассказываю, как мы со студентами, которые обучаются у нас на курсах сделали новый сайт нашей школы.

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

🏆 Hello, world!

🏆 Hello, world!

Добро пожаловать на новый Pylot.me

Что это за проект

Я всю жизнь писал статьи, и всю жизнь публиковался на разных сайтах.

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

Распаковка кортежей в Python

Распаковка кортежей в Python

Признайтесь честно, вас может прельстить использование индексов при работе с кортежами, списками и другими последовательностями, в случае, когда вам нужен доступ в них к вполне конкретному элементу, а вы и понятия не имеете под каким индексом этот элемент у вас находится?

Вместе с тем этот трюк, который на самом деле имеет довольно большой потенциал в плане упрощения понимания логики и читабельности кода, достаточно редко используется особенно начинающими программистами. Вообще же, первая (определяющая) строка цикла for явится в вашей практике тем наиболее распространенным местом, куда вам потребуется распаковывать, как разнообразные кортежи, так и другие итерируемые объекты.

Что делать, если индексы при обработке последовательностей нам все-таки нужны?

Что делать, если индексы при обработке последовательностей нам все-таки нужны?

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

Если же нам нужно изменить индекс, начиная с которого должны будут выводиться элементы нашего списка, то это можно сделать с помощью 2-го аргумента функции enumerate(), посредством ключевого слова start: В этом примере проиллюстрирован наиболее распространенный вариант применения функции enumerate() с одновременной распаковкой выводимых ею кортежей в поименованные переменные прямо в строке с определением цикла for.

Стоит ли пользоваться индексами в циклах Python

Стоит ли пользоваться индексами в циклах Python

Программируя на C, JavaScript, Java и многих других языках в ходе обработки различных последовательностей с помощью циклов мы привыкли всегда прибегать к индексам.

Всю эту работу Python провел у себя под "капотом" и без нас, а мы написав этот излишний код, мало того, что усложнили читабельность программы, так еще практически вдвое увеличили количество выполняемых ею команд. Кроме того, основная переменная i в цикле вышеприведенного примера ассоциируется не с самым обрабатываемым нами элементом, а с его индексом, что также существенно усложняет читабельность и понимание логики программы.

Мелкое и глубокое копирование объектов в Python

Мелкое и глубокое копирование объектов в Python

Иногда, при программировании на Python у нас возникает потребность в дублировании (создании копии) того или иного объекта данных (списка, словаря, класса и т.д) так, чтобы последующие изменения нашего первоначального объекта никак не отражались бы на предварительно созданном его дубли.

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

Dataclass'ы в Python

Dataclass'ы в Python

Основы работы с классами данных

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

Используемый при создании классов данных декоратор @dataclass, который раннее использовался нами без каких-либо параметров, на самом деле может иметь следующий арсенал поименованных аргументов: При всей кажущейся сложности, на самом деле выход из вышеописанной ситуации основывается лишь на создании дополнительного списка bits, где требуется просто указать необходимую нам последовательность сортировки наших значений.