Почему Python медленно работает?
В первую очередь причиной медленной работы Python является его динамическая природа и универсальность. Его можно использовать в качестве инструмента для решения самых разнообразных задач, хотя при этом зачастую будут доступны более оптимальные и быстрые альтернативы.
Тем не менее, всегда есть способы оптимизировать ваши приложения на Python с помощью асинхронности, инструментов профилирования и использования нескольких интерпретаторов. А для приложений, где время запуска неважно будет полезен JIT-компилятор, и соответственно интерпретатор PyPy. Для тех же частей вашего кода, где производительность критична и у вас при этом имеется много статически типизированных переменных, в качестве наиболее оптимального варианта может стать использование Cython.
В первую очередь причиной медленной работы Python является его динамическая природа и универсальность. Его можно использовать в качестве инструмента для решения самых разнообразных задач, хотя при этом зачастую будут доступны более оптимальные и быстрые альтернативы.
Тем не менее, всегда есть способы оптимизировать ваши приложения на Python с помощью асинхронности, инструментов профилирования и использования нескольких интерпретаторов. А для приложений, где время запуска неважно будет полезен JIT-компилятор, и соответственно интерпретатор PyPy. Для тех же частей вашего кода, где производительность критична и у вас при этом имеется много статически типизированных переменных, в качестве наиболее оптимального варианта может стать использование Cython.
Слабые ссылки
Слабые ссылки позволяют получать доступ к объекту, как и обычные, однако, так сказать, они не учитываются в механизме подсчета ссылок. Другими словами, слабые ссылки не могут поддерживать объект живым, если на него не осталось больше сильных ссылок.
Согласно документации, слабые ссылки нужны для организации кэшей и хэш-таблиц из «тяжелых» объектов, когда не требуется поддерживать объект живым только силами этого самого кэша; чтобы в долгоживущей программе не кончалась память из-за хранения в кэшах большого количества уже не нужных объектов.
Встроенный модуль weakref отвечает за функциональность слабых ссылок.
Слабые ссылки позволяют получать доступ к объекту, как и обычные, однако, так сказать, они не учитываются в механизме подсчета ссылок. Другими словами, слабые ссылки не могут поддерживать объект живым, если на него не осталось больше сильных ссылок.
Согласно документации, слабые ссылки нужны для организации кэшей и хэш-таблиц из «тяжелых» объектов, когда не требуется поддерживать объект живым только силами этого самого кэша; чтобы в долгоживущей программе не кончалась память из-за хранения в кэшах большого количества уже не нужных объектов.
Встроенный модуль weakref отвечает за функциональность слабых ссылок.
This media is not supported in your browser
VIEW IN TELEGRAM
Просмотр видео в терминале
Установка пакета:
video-to-ascii
это питоновский пакет, который даёт возможность просматривать видео в терминале, используя таблицу ASCII.Установка пакета:
pip3 install video-to-ascii
Чтобы запустить видео пропишите слудующую команду:video-to-ascii -f название_видео.mp4
match/case в Python 3.10
Часто приходится проверять не только тип данных, но и количество, что приводит к появлению огромного числа веток
Часто приходится проверять не только тип данных, но и количество, что приводит к появлению огромного числа веток
if/else
с вызовом функций isinstance
, len
и обращению к элементам по индексу, ключу или атрибуту. Именно для упрощения работы и уменьшения if/else
был введен новый оператор match/case
.Match/case
сам решает проблему с проверкой типов данных, с проверкой значений и их количеством, что позволяет упростить логику и увеличить читаемость кода. И очень удобно, что можно объявлять переменные и помещать в них значения прямо в ветке case
без использования моржового оператора.Метаклассы в Python
Предположим, что вы знаете разницу между классами и объектами. Тогда метаклассы не должны быть для вас слишком уж сложными. Если кратко, то они являются классами для классов (отсюда и «мета» в их названии).
Проще говоря, в то время как классы являются чертежами для объектов, метаклассы являются чертежами для классов. Класс является описанием, когда мы создаем его экземпляр, тогда как метакласс является описанием класса, и существует только когда определен класс.
Самая простая реализация метакласса, которая ничего не делает, выглядит следующим образом👆
Предположим, что вы знаете разницу между классами и объектами. Тогда метаклассы не должны быть для вас слишком уж сложными. Если кратко, то они являются классами для классов (отсюда и «мета» в их названии).
Проще говоря, в то время как классы являются чертежами для объектов, метаклассы являются чертежами для классов. Класс является описанием, когда мы создаем его экземпляр, тогда как метакласс является описанием класса, и существует только когда определен класс.
Самая простая реализация метакласса, которая ничего не делает, выглядит следующим образом👆
Форматирование текста
Модуль textwrap может использоваться для форматирования текста в ситуациях, когда требуется красивая печать. Он предлагает функциональность, аналогичную функциям заполнения абзацев, которые можно найти во многих текстовых редакторах и текстовых процессорах.
Модуль textwrap может использоваться для форматирования текста в ситуациях, когда требуется красивая печать. Он предлагает функциональность, аналогичную функциям заполнения абзацев, которые можно найти во многих текстовых редакторах и текстовых процессорах.
Как работает Python?
Этап #1. Инициализация
После запуска вашей программы, Python-интерпретатор читает код, проверяет форматирование и синтаксис. При обнаружении ошибки он незамедлительно останавливается и показывает сообщение об ошибке.
Этап #2. Компиляция
Интерпретатор транслирует (переводит) исходные инструкции вашей программы в байт-код (низкоуровневое, платформонезависимое представление исходного текста). Такая трансляция необходима в первую очередь для повышения скорости — байт-код выполняется в разы быстрее, чем исходные инструкции.
Если Python-интерпретатор обладает правом записи, он будет сохранять байт-код в виде файла с расширением
Этап #3. Выполнение
Как только байт-код скомпилирован, он отправляется на виртуальную машину
Этап #1. Инициализация
После запуска вашей программы, Python-интерпретатор читает код, проверяет форматирование и синтаксис. При обнаружении ошибки он незамедлительно останавливается и показывает сообщение об ошибке.
Этап #2. Компиляция
Интерпретатор транслирует (переводит) исходные инструкции вашей программы в байт-код (низкоуровневое, платформонезависимое представление исходного текста). Такая трансляция необходима в первую очередь для повышения скорости — байт-код выполняется в разы быстрее, чем исходные инструкции.
Если Python-интерпретатор обладает правом записи, он будет сохранять байт-код в виде файла с расширением
.pyc
. Если исходный текст программы не изменился с момента последней компиляции, при следующем запуске вашей программы, Python сразу загрузит файл .pyc
, минуя этап компиляции (тем самым ускорит процесс запуска программы).Этап #3. Выполнение
Как только байт-код скомпилирован, он отправляется на виртуальную машину
Python
(PVM
). Здесь выполняется байт-код на PVM
.Все мы знаем, что Python интерпретируемый язык программирования.
Интерпретатор — это программа, которая конвертирует ваши инструкции, написанные на Python, в байт-код и выполняет их. По сути интерпретатор — это программный слой между вашим исходным кодом и железом.
Существует 2 типа интерпретаторов:
— простой интерпретатор. Он берет одну инструкцию, транслирует и сразу выполняет ее, а затем берет следующую инструкцию.
— интерпретатор компилирующего типа. Это система из компилятора и интерпретатора. Компилятор переводит исходный код программы в промежуточное представление (байт-код), а интерпретатор (виртуальная машина) выполняет этот байт-код.
CPython:
— считается эталонной реализацией языка Python:
— интерпретатор компилирующего типа (благодаря этому достигается большее быстродействие выполнения программ).
— написан на C.
— исходный код CPython находится в открытом доступе.
— его разработка ведётся группой разработчиков под руководством Гвидо ван Россума — создателя Python.
Кроме этого, у интерпретатора CPython есть особенность — он может работать в режиме диалога (REPL — read-eval-print loop). Интерпретатор считывает законченную конструкцию языка, выполняет её, печатает результаты и переходит к ожиданию ввода пользователем следующей конструкции.
@pythonnation
Интерпретатор — это программа, которая конвертирует ваши инструкции, написанные на Python, в байт-код и выполняет их. По сути интерпретатор — это программный слой между вашим исходным кодом и железом.
Существует 2 типа интерпретаторов:
— простой интерпретатор. Он берет одну инструкцию, транслирует и сразу выполняет ее, а затем берет следующую инструкцию.
— интерпретатор компилирующего типа. Это система из компилятора и интерпретатора. Компилятор переводит исходный код программы в промежуточное представление (байт-код), а интерпретатор (виртуальная машина) выполняет этот байт-код.
CPython:
— считается эталонной реализацией языка Python:
— интерпретатор компилирующего типа (благодаря этому достигается большее быстродействие выполнения программ).
— написан на C.
— исходный код CPython находится в открытом доступе.
— его разработка ведётся группой разработчиков под руководством Гвидо ван Россума — создателя Python.
Кроме этого, у интерпретатора CPython есть особенность — он может работать в режиме диалога (REPL — read-eval-print loop). Интерпретатор считывает законченную конструкцию языка, выполняет её, печатает результаты и переходит к ожиданию ввода пользователем следующей конструкции.
@pythonnation
⚡️ Задачка с собеседования | Уровень: #Easy
Условие:
Ваша цель — написать функцию, которая находит самые повторяющиеся слова в строке.
Пример:
#Задачка_с_собеседования
Условие:
Ваша цель — написать функцию, которая находит самые повторяющиеся слова в строке.
Пример:
text ('Am I want write code? Yeah! I like it') → I📌 Пишите ваше решение в комментариях👇
text ('Hi! How are you? Hi! I am okay') → Hi
text ('test text test and test that again') → test
#Задачка_с_собеседования
⚡️ Pyperclip – копирование и вставка в буфер обмена
Для этого нам будет нужна библиотека pyperclip. Она выполняет самые простые функции по копированию и считыванию текста.
Установка:
Если вы последовательно скопируете два значения в буфер обмена, первое будет перезаписано. Буфер обмена может иметь только одно значение.
#pyperclip @pythonnation
Для этого нам будет нужна библиотека pyperclip. Она выполняет самые простые функции по копированию и считыванию текста.
Установка:
pip install pyperclip
Вот, что она умеет:copy(text: str)
— получает строку и записывает её в буфер обмена paste()
— возвращает текст из буфера. Если вы последовательно скопируете два значения в буфер обмена, первое будет перезаписано. Буфер обмена может иметь только одно значение.
#pyperclip @pythonnation
Всем привет! Сегодня 20 февраля, а это означает, что сегодня день появления на свет языка программирования Python🐍. Сегодня Python исполняется 3️⃣1️⃣ год. За эти года, Python стал одним из самых популярных📈 языков программирования в мире. Что же, пожелаю дальнейшего развития и покорения новых высот Python.
⚡️ Задачка с собеседования | Уровень: #Easy
Условие:
Ваша задача — написать функцию, которая проверит, все ли значения увеличиваются на один
Пример:
#задача_с_собеседования @pythonnation
Условие:
Ваша задача — написать функцию, которая проверит, все ли значения увеличиваются на один
Пример:
[-1, 0, 1, 2, 3] -> True📌 Пишите ваше решение в комментариях👇
[-1, 0, 1, 3, 4]) -> False
[0, 1] -> True
[1, 0] -> False
#задача_с_собеседования @pythonnation
Генерация случайных данных
Очень часто при создании приложений возникает ситуация, когда нам нужны данные для тестирования различных функциональных возможностей.
Чтобы решить эту проблему и работать с более разнообразными и реалистичными данными, изобретательные разработчики создали библиотеку Faker, которая может генерировать все типы случайных данных.
Чтобы установить Faker мы используем pip :
Очень часто при создании приложений возникает ситуация, когда нам нужны данные для тестирования различных функциональных возможностей.
Чтобы решить эту проблему и работать с более разнообразными и реалистичными данными, изобретательные разработчики создали библиотеку Faker, которая может генерировать все типы случайных данных.
Чтобы установить Faker мы используем pip :
pip3 install Faker
Затем мы можем очень легко начать генерировать случайные данные, создав экземпляр класса Faker.Что такое
Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку
Файлы с расширением .pyc и .pyo — это байткод(что такое байткод?) и оптимизированный байткод. Они создаются заново, если код программы изменился.
Первоначально
#pycache @pythonnation
__pycache__🤔
Это папка, внутри которой хранятся файлы .pyc и .pyo. Зачем она нужна можно почитать в PEP 3147, а тут я кратко объясню.Каждый раз, когда вы запускаете программу, Python, переводит её в байткод и сохраняет в папку
__pycache__
. Это сделано в целях оптимизации и, чтобы, модули быстрее импортировались.Файлы с расширением .pyc и .pyo — это байткод(что такое байткод?) и оптимизированный байткод. Они создаются заново, если код программы изменился.
Первоначально
__pycache__
папки ввели, чтобы удобней поддерживать несколько версий Питон-интерпретатора (PEP 3147).#pycache @pythonnation
CPython – это, по сути, дефолтный и наиболее распространенный интерпретатор (реализация) языка Python, написанный на C. Это изначальная версия языка, которую пользователи скачивают с официального сайта – python.org.
Лучше всего CPython можно описать как некую смесь интерпретатора и компилятора, так как написанный вами код преобразуется в байт-код. Под байт-кодом мы понимаем программный код, который компилируется и преобразуется в низкоуровневый язык, который, в свою очередь, может быть использован как набор инструкций для интерпретатора. Именно этот байт-код и выполняется на виртуальной машине CPython.
Поскольку это "родная" реализация Python, CPython наиболее совместим с пакетами и модулями языка. Эта реализация будет наилучшим выбором, если вам нужно написать код, полностью соответствующий стандартам Python.
Есть книга по CPython - ТЫК
#реализация_python @pythonnation
Лучше всего CPython можно описать как некую смесь интерпретатора и компилятора, так как написанный вами код преобразуется в байт-код. Под байт-кодом мы понимаем программный код, который компилируется и преобразуется в низкоуровневый язык, который, в свою очередь, может быть использован как набор инструкций для интерпретатора. Именно этот байт-код и выполняется на виртуальной машине CPython.
Поскольку это "родная" реализация Python, CPython наиболее совместим с пакетами и модулями языка. Эта реализация будет наилучшим выбором, если вам нужно написать код, полностью соответствующий стандартам Python.
Есть книга по CPython - ТЫК
#реализация_python @pythonnation
⚡️ Задача с собеседования | Уровень: #Easy
Условие:
Ваша задача — написать функцию, которая находит сумму всех цифр в числе. На вход также могут пойти и числа меньше нуля — их стоит переводить в неотрицательное числа.
Пример:
📌 Пишите ваше решение в комментариях👇
#задача_с_собеседования @pythonnation
Условие:
Ваша задача — написать функцию, которая находит сумму всех цифр в числе. На вход также могут пойти и числа меньше нуля — их стоит переводить в неотрицательное числа.
Пример:
1234 → 10Знак "_" в числах может использоваться для упрощения чтения пользователем. 1_000_000 — это то же самое, что и 1000000
-9876 → 30
7013 → 11
100001 → 2
📌 Пишите ваше решение в комментариях👇
#задача_с_собеседования @pythonnation