Разъяснивший Python
7.22K subscribers
3.11K photos
40 videos
30 files
3.06K links
Твой проводник в омут Python'а

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: https://telega.in/c/python_pssss
Download Telegram
Используйте модуль asyncio для асинхронного программирования

Модуль asyncio предоставляет инструменты для асинхронного программирования в Python, такие как корутины, событийный цикл и другие. Асинхронное программирование позволяет выполнять несколько задач параллельно, не блокируя основной поток выполнения. Например, с помощью asyncio можно создать асинхронные серверы и клиенты, выполнять HTTP-запросы, обрабатывать сигналы и т.д.

Разъяснивший Python
Используйте модуль multiprocessing для многопроцессорного программирования

Модуль multiprocessing предоставляет инструменты для многопроцессорного программирования в Python, такие как процессы, очереди и т.д. Многопроцессорное программирование позволяет распараллеливать выполнение задач на несколько ядер процессора, ускоряя работу кода.

Разъяснивший Python
Используйте модуль contextlib для управления контекстом

В этом примере мы используем модуль contextlib для создания контекстного менеджера. Контекстный менеджер - это объект, который используется для управления контекстом выполнения определенного участка кода. Для создания контекстного менеджера мы определяем функцию my_context, которая возвращает генератор, использующий ключевое слово yield. Мы вызываем наш контекстный менеджер с помощью определенного ключевого слова.

Разъяснивший Python
Используйте встроенные функции и модули для ускорения разработки и упрощения кода

Python предоставляет множество встроенных функций и модулей, которые упрощают работу с файлами, базами данных, сетевыми протоколами и другими задачами. Например, для чтения и записи файлов можно использовать функции open, read и write, а для работы с базами данных можно использовать модуль sqlite3.

Разъяснивший Python
Используйте функции высшего порядка для создания более красивого и гибкого кода

Функции высшего порядка - это функции, которые принимают другие функции в качестве аргументов и/или возвращают другие функции в качестве результата. Такие функции позволяют создавать более красивый и гибкий код, который легко расширять и изменять. Например, можно создать функцию, которая принимает другую функцию в качестве аргумента и применяет ее ко всем элементам списка.

Разъяснивший Python
Используйте многопоточность для ускорения выполнения задач

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

Разъяснивший Python
product

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

К счастью, в Python всегда можно избежать вложенных циклов с помощью встроенной функции product().

Разъяснивший Python
Оператор морж

Начиная с Python 3.8, появился новый синтаксис под названием «оператор морж» или walrus operator, который может присваивать значения переменным как часть более крупного выражения.

Оператор := получил свое милое название из-за глаз и бивней моржа.

Разъяснивший Python
Модуль tkinter: Реализация секундомера

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

Смотреть видео...

Разъяснивший Python
Python + JavaScript - Full Stack App Tutorial

Погрузитесь в разработку full stack в этом подробном руководстве, где я расскажу вам о создании динамического веб-приложения с нуля, используя возможности Python с Flask для серверной части и JavaScript с React для интерфейса.

Смотреть видео...

Разъяснивший Python
Что такое монотонный стек?

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

Читать...

Разъяснивший Python
Валидные значения словаря

В словарь можно поместить что угодно – вы не ограничены числами или строками. Можете поместить списки внутрь словаря и получить доступ к вложенным значениям.

Разъяснивший Python
Оператор Walrus

По какой-то причине оператор "Walrus" в Python 3.8 (:=) стал довольно популярным. Он может быть полезен в ситуациях, когда вы хотели бы присвоить значения переменным внутри выражения. Например, это спасло одну строку кода и неявно предотвратило вызов some_func дважды.

Разъяснивший Python
Использование оператора Walrus (ч.1)

Непарентизированное "выражение присваивания" (использование оператора walrus) ограничено на верхнем уровне, следовательно SyntaxError в a := "wtf_walrus" утверждение первого фрагмента. Заключая в скобки, он работал так, как ожидалось, и назначал a.

Разъяснивший Python
Использование оператора Walrus (ч.2)

Синтаксис оператора Walrus имеет вид, NAME:= exprгде NAME - допустимый идентификатор, а expr - допустимое выражение. Следовательно, повторяемая упаковка и распаковка не поддерживаются, что означает, (a := 6, 9) эквивалентно ((a := 6), 9) и, в конечном счете, (a, 9) (где a значение равно 6').

Как обычно, заключение в скобки выражения, содержащего = operator, не допускается. Отсюда синтаксическая ошибка в (a, b = 6, 9).

Разъяснивший Python
Строки

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

Разъяснивший Python
Строки иногда могут быть сложными (ч.1)

Когда для a и b в одной строке заданы значения "wtf!", интерпретатор Python создает новый объект, а затем одновременно ссылается на вторую переменную. Если вы делаете это в отдельных строках, он не "знает", что уже существует "wtf!" как объект (потому что "wtf!" неявно интернирован согласно фактам, упомянутым выше). Это оптимизация во время компиляции. Эта оптимизация не применяется к версиям CPython 3.7.x (проверьте этот вопрос для более подробного обсуждения).

Разъяснивший Python
Строки иногда могут быть сложными (ч.2)

Модуль компиляции в интерактивной среде, такой как IPython, состоит из одного оператора, тогда как в случае модулей он состоит из всего модуля. a, b = "wtf!", "wtf!" это один оператор, тогда как a = "wtf!"; b = "wtf!" это два оператора в одной строке. Это объясняет, почему идентификаторы различаются в a = "wtf!"; b = "wtf!", а также объясняет, почему они одинаковы при вызове в some_file.py

Разъяснивший Python
Будьте осторожны с цепными операциями (ч.1)

Согласно документации, если a, b, c, ..., y, z являются выражениями, а op1, op2, ..., opN - операторами сравнения, то op1 является op2 c ... y opN z эквивалентен op1 b и b op2 c и ... y opN z, за исключением того, что каждое выражение вычисляется не более одного раза.

Из-за этого мы получаем что, False is False is False эквивалентно (False is False) and (False is False) и True is False == False эквивалентно (True is False) and (False == False) и поскольку первая часть инструкции (True is False) вычисляется как False, общее выражение вычисляется как False.

Разъяснивший Python
Будьте осторожны с цепными операциями (ч.2)

Такое поведение в этом примере может показаться вам глупым но, оно фантастично с такими вещами, как a == b == c и 0 <= x <= 100. Поэтому 1 > 0 < 1 эквивалентно, (1 > 0) and (0 < 1) который вычисляется как True и Выражение (1 > 0) < 1 эквивалентно True < 1.

Итак, 1 < 1 вычисляется как False

Разъяснивший Python