54326
№ 4931117861 Публикуем интересные/полезные фичи/библиотеки языка. По вопросам сотрудничества: @adv_and_pr Канал на бирже: https://telega.in/c/seniorpy
Генерируем ip адреса
С помощью следующего фрагмента кода мы можем с легкостью сгенерировать ip адрес.
#вопросы_с_собеседований
Как работает функция zip() в Python, что произойдет, если переданные итерируемые объекты имеют разную длину, и как можно преобразовать результат работы этой функции обратно в оригинальные последовательности?
Ответ ⬇️
Функция zip() берет несколько итерируемых объектов и объединяет их в один итератор, который возвращает кортежи, сформированные из элементов входных последовательностей. Если переданные итерируемые объекты имеют разную длину, zip() завершает свою работу, как только самая короткая из последовательностей исчерпается.
Чтобы преобразовать результат zip() обратно в исходные последовательности, можно использовать распаковку с * (оператор звездочка), которая разделяет кортежи на отдельные списки.
Пример использования ⚙️
# Объединяем два спискаЧитать полностью…
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30]
# zip объединяет элементы двух списков
zipped = zip(names, ages)
print(list(zipped)) # [('Alice', 25), ('Bob', 30)]
# Разъединяем с помощью распаковки
zipped_again = zip(names, ages) # Создаем заново, так как zip() исчерпаем
unzipped_names, unzipped_ages = zip(*zipped_again)
print(unzipped_names) # ('Alice', 'Bob')
print(unzipped_ages) # (25, 30)
⚙️heapq.nlargest() и heapq.nsmallest()
В Python функции heapq.nlargest() и heapq.nsmallest() позволяют получить n наибольших или наименьших элементов из коллекции. Это удобно для задач, связанных с выборкой экстремальных значений.
⚙️ string.Template
В Python класс string.Template из модуля string позволяет подставлять значения в строки с использованием плейсхолдеров. Это удобный способ работы с шаблонами текста.
⌛ Что будет выведено при выполнении кода?
Пояснение ⬇️
Статические методы вызываются напрямую через имя класса, без необходимости создавать экземпляр. Метод static_method возвращает строку "Static Method". Метод class_method получает ссылку на класс cls и использует её для возвращения строки "Class Method from MyClass".Читать полностью…
Комьюнити, полезное для всех бекенд-разработчиков
Как работает VK изнутри? Что происходит за интерфейсами, когда миллионы пользователей одновременно отправляют сообщения, загружают фото и смотрят клипы?
В канале Backend VK Hub мы рассказываем о работе всех наших сервисах: от VK Play до Tarantool. Делимся подходами к масштабированию, оптимизации и новым архитектурным решениям. Открыто дискутируем, а также регулярно публикуем вакансии в нашу команду.
Здесь — реальные кейсы, технические разборы, советы от наших экспертов и возможность поговорить с ними в любой момент. Подписывайся!
Реклама. ООО "ВК" ИНН 7743001840
Поймай меня, если сможешь: руководство по обработке исключений в Python
Люди, которые пишут код, часто воспринимают работу с исключениями как необходимое зло. Но освоение системы обработки исключений в Python способно повысить профессиональный уровень программиста, сделать его эффективнее.
Смотреть статью
Пароль на код
Этот трюк с Python отлично подходит для защиты вашего кода паролем. Мы будем использовать функцию getpass() из библиотеки getpass , которая кодирует ваш ввод. Это предотвратит запуск кода без пароля.
Работа с датами
Модуль python-dateutil предоставляет мощное расширение для стандартного datetime. Устанавливается он следующим образом:
Установка библиотеки - pip3 install python-dateutilВыше приведен пример парсинга даты из логов.
Документацию пакета можно найти здесь.
art
Всё, что вам может понадобится для вывода красивых надписей или артов в терминал. Ставится с помощью команды pip install art. Полный список возможностей есть в документации.
#вопросы_с_собеседований
Что будет в результате выполнения данного кода?
Ответ:
Данный код выдаст в виде результата пустой список [], а ошибка IndexError не возникнет.
Как известно, попытка доступа к элементу списка с использованием индекса, превышающего число элементов (например, операция list[10] в списке выше), приводит к ошибке IndexError. Однако, попытка получить доступ к срезу списка с начальным индексом, превышающем количество элементов в списке, не приведет к IndexError и просто вернет пустой список.
Особенно неприятным это обстоятельство делает то, что оно может привести к ошибкам, которые действительно трудно отследить, поскольку во время выполнения кода не возникает никаких ошибок.
try-except-else
В конструкцию try-except можно добавить также блок else. Он отработает только в случае выполнения кода без ошибок.
Использовать блок else предпочтительнее, чем добавлять дополнительный код в блок try. Это позволяет избежать случайного перехвата исключений, которые не были вызваны кодом, защищенным конструкцией try-except.
Как работать с датами в pandas
Библиотека Pandas — это весьма эффективный инструмент для обработки данных, представляющих собой временные ряды.
В данной статье вы узнаете: Как извлечь информацию о месяце и годе, прибавить временной интервал, найти интервал в днях, последовательность между начальной и конечной датами.
👉 Ссылка на статью
Функция sleep()
Чтобы понять смысл функции sleep(), разберём простой пример. Три строки выводятся в определённый промежуток времени – задержку обеспечивает sleep. Сперва выводится первая строка, затем идёт функция sleep(), которая задерживает вывод на 2 секунды. Точно так же для следующего print мы используем sleep на 5 секунд.
В тексте этого не видно, но после запуска кода строки выводятся через указанные интервалы времени.
Разбиение на фрагменты
Этот пример покажет, как разбить список на фрагменты и разделить его на меньшие части.
👩💻 Задача по Python: Поиск первого неповторяющегося символа в строке
Напишите функцию, которая находит первый символ в строке, который не повторяется. Если все символы повторяются, функция должна вернуть None.
Пример:
print(first_unique_char("swiss")) # Ожидаемый результат: "w"
print(first_unique_char("aabb")) # Ожидаемый результат: None
⚙️ itertools.accumulate()
В Python функция itertools.accumulate() вычисляет накопительные суммы или результаты других операций (например, произведение) над итерируемым объектом. Полезна для анализа последовательностей.
От первой строчки кода — до миллионов запросов в секунду.
В VK бэкендеры решают задачи, которые действительно меняют цифровой ландшафт. Узнайте об их принципах работы и драгоценных победах. По ссылке — истории из первых рук и вакансии для тех, кто не боится вызовов.
👩💻 Задача по Python: Объединение и сортировка двух списков
Напишите функцию, которая принимает два списка чисел, объединяет их, удаляет дубликаты и возвращает отсортированный список.
Пример:
list1 = [3, 1, 4, 1, 5]
list2 = [9, 2, 6, 5, 3, 5]
result = merge_and_sort(list1, list2)
print(result)
# Ожидаемый результат: [1, 2, 3, 4, 5, 6, 9]
⚙️ reversed()
В Python встроенная функция reversed() возвращает итератор, который перебирает элементы последовательности в обратном порядке. Это удобно для работы с последовательностями, когда нужен обратный порядок.
#вопросы_с_собеседований
Что выведет программа?
Ответ:
Кажется, ничего сложного. create_multipliers вернёт список из 5 функций (назовём их list_lamba_f). Каждая list_lamba_f будет умножать свой аргумент на свой индекс в результирующем массиве.
Получается, что на экране мы увидим:
0
2
4
6
8
Дальнейший разбор предполагает, что вам знакомо замыкание (closure) при использовании вложенных функций (nested functions).
Свои коррективы в наивное объяснение выше вносит позднее связывание. Согласно ему, значение переменной из замыкания (это переменная i) вычисляется в тот момент, когда вызывается внутренняя функция (наши list_lamba_f).
Получается, что значение i в list_lamba_f вычисляется в момент вызова multiplier(2) в пятой строчке. Но в этот момент create_multipliers уже отработала целиком. и значение i — это 4. То есть для всех list_lamba_f значение i равно 4.
Итак, ответ:
8
8
8
8
8.
Узнаем расстояние между городами
Геодезическое расстояние – это длина кратчайшего пути между двумя точками на любой поверхности Земли. В следующем примере мы покажем, как пользователь может вычислить геодезическое расстояние на основе данных широты и долготы.
В нашем примере мы узнаем, ято расстояние между городами Нью-Йорк и Техас 2507 километров.
Преобразование WORD в PDF
Устали от необходимости использовать онлайн-конвертеры docx в PDF с плохими интерфейсами и ограничениями? Тогда начинайте пользоваться модулем docx2pdf. :)
Установка модуля — pip install docx2pdf. Подробнее с модулем можно ознакомиться здесь.
👮 Raspberry Pi начеку: делаем за час охранную систему с помощью датчика расстояния и камеры
Создаем охранную систему с помощью Raspberry Pi, датчика расстояния HC-SR04 и камеры. Снимки нарушителя границ безопасности отправляем на почту и получаем уведомление в мобильное приложение IFTTT.
https://proglib.io/p/raspberry-pi-nacheku-delaem-za-chas-ohrannuyu-sistemu-s-pomoshchyu-datchika-rasstoyaniya-i-kamery-2021-11-17
Аннотация типов
Тайп хинтинг был добавлен в python еще в версии 3.5 вместе с библиотекой typing, в которой содержались структуры нужные для создания дженериков для аннотирования переменных. Тогда синтаксис аннотирования работал при инициализации переменных. В последствии в версии 3.6 эта возможность была расширена и стало возможно объявлять типы переменных вообще в любом месте кода.
В python 3.9 была добавлена возможность использовать в качестве дженериков для аннотирования встроенные коллекции, вместо структур typing'а (List, Dict, Tuple...).
И наконец в 3.10 на замену перечисления возможных принимаемых типов через typing.Union пришел опреатор | (or). Также в 3.10 был изменен синтаксис создания тайпалиасов, чтобы разграничить с присваиванием переменной, теперь лучше это делать непосредственно через TypeAlias.
Создание и чтение изображения
В этом примере мы создадим новое изображение в режиме RGB с размером (400, 300). Мы не будем указывать цвет, поэтому методы new() считают значение цвета по умолчанию 0 – для каналов RGB будет черным цветом.
Ознакомиться подробнее можно здесь.
Функция asctime()
Функция asctime() модуля time преобразует кортеж или struct_time, представляющие время, возвращаемое time.gmtime() или time.localtime(), в строку следующего вида: 'Fri Apr 24 15:13:37 2022'.
Поле с указанием дня имеет длину два символа и дополняется пробелом, если день представляет собой одну цифру.
Если аргумент t не указан, используется текущее время, возвращаемое функцией time.localtime().
Функция time.asctime() не использует информацию о локали и не добавляет завершающий символ новой строки.
Создание словаря из двух списков
Встроенная функция zip() принимает несколько итерируемых объектов и возвращает последовательность кортежей. Каждый кортеж группирует элементы объектов по их индексу.
Генераторы словарей и множеств
Вы, конечно, пользовались генераторами списков. Но знаете ли вы о генераторах множеств и словарей?
В случае словарей отличие только в парах ключ-значение. Такие генераторы удобны для начальной инициализации значений последовательностей.
Как переименовать файл с помощью Python
С помощью метода rename модуля os мы можем с легкостью изменить имя файла.