Python Nation🐍🇺🇦
2.84K subscribers
237 photos
2 files
158 links
Канал для всіх, хто вивчає Python: поради, приклади коду, бібліотеки, лайфхаки та актуальні новин👨‍💻🐍

По всім питанням👉 @giorg_jr

❗️Канал регулярно очищується від неактивних підписників❗️
Download Telegram
Как работает Python?

Этап #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
⚡️ Задачка с собеседования | Уровень: #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. Она выполняет самые простые функции по копированию и считыванию текста.

Установка: pip install pyperclip

Вот, что она умеет:

copy(text: str) — получает строку и записывает её в буфер обмена

paste() — возвращает текст из буфера.

Если вы последовательно скопируете два значения в буфер обмена, первое будет перезаписано. Буфер обмена может иметь только одно значение.

#pyperclip @pythonnation
Всем привет! Сегодня 20 февраля, а это означает, что сегодня день появления на свет языка программирования Python🐍. Сегодня Python исполняется 3️⃣1️⃣ год. За эти года, Python стал одним из самых популярных📈 языков программирования в мире. Что же, пожелаю дальнейшего развития и покорения новых высот Python.
⚡️ Задачка с собеседования | Уровень: #Easy

Условие
:

Ваша задача — написать функцию, которая проверит, все ли значения увеличиваются на один

Пример:
[-1, 0, 1, 2, 3] -> True
[-1, 0, 1, 3, 4]) -> False
[0, 1] -> True
[1, 0] -> False

📌 Пишите ваше решение в комментариях👇

#задача_с_собеседования @pythonnation
Генерация случайных данных

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

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

Чтобы установить Faker мы используем pip :

pip3 install Faker

Затем мы можем очень легко начать генерировать случайные данные, создав экземпляр класса Faker.
Что такое __pycache__🤔

Это папка, внутри которой хранятся файлы .pyc и .pyo. Зачем она нужна можно почитать в PEP 3147, а тут я кратко объясню.

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

Файлы с расширением .pyc и .pyo — это байткод(что такое байткод?) и оптимизированный байткод. Они создаются заново, если код программы изменился.

Первоначально __pycache__ папки ввели, чтобы удобней поддерживать несколько версий Питон-интерпретатора (PEP 3147).

#pycache @pythonnation
Python - императивный язык программирования

Императивный подход - ты рассказываешь машине, как решить задачу.

— купить инструменты
— купить кирпич
— строить дом

Декларативный подход - ты рассказываешь машине, какой результат от нее хочешь.

— хочу новый дом
CPython – это, по сути, дефолтный и наиболее распространенный интерпретатор (реализация) языка Python, написанный на C. Это изначальная версия языка, которую пользователи скачивают с официального сайта – python.org.

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

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

Есть книга по CPython - ТЫК

#реализация_python @pythonnation
⚡️ Задача с собеседования | Уровень: #Easy

Условие:

Ваша задача — написать функцию, которая находит сумму всех цифр в числе. На вход также могут пойти и числа меньше нуля — их стоит переводить в неотрицательное числа.

Пример:

1234 → 10
-9876 → 30
7013 → 11
100001 → 2

Знак "_" в числах может использоваться для упрощения чтения пользователем. 1_000_000 — это то же самое, что и 1000000

📌 Пишите ваше решение в комментариях👇

#задача_с_собеседования @pythonnation
⚡️ Задача с собеседования | Уровень: #Easy

Условие:

Создать функцию которая принимает число и возвращает "Even" для чётных чисел и "Odd" для нечётных.

Пример:

2 → "Even"
1 → "Odd"
-46 → "Even"
71 → "Odd"
0 → "Even"
-123 → "Odd"

📌Делитесь своим решением в комментариях👇

#задача_с_собеседования @pythonnation
Присваивания срезам

Представьте, что у вас есть задача заменить каждое второе строковое значение на непосредственно предшествующее ему.

Присваивания срезам самый простейший и наиболее эффективный способ решения нашей маленькой задачи.

Результат представляет собой исходный список, в котором все строковые значения 'null', 'False', 'undefined', '****', 'corrupted', 'nothing' заменены предшествующими им строковыми значениями с указанием браузера.

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

Интересное расширение Python, обобщающее list comprehension, — выражения-генераторы.
Они работают совершенно аналогично list comprehension, только без создания в памяти собственно списка. Числа создаются по ходу дела, без сохранения их явным образом в списке.

Например, вместо вычисления квадратов первых 20 натуральных чисел с помощью list comprehension:

sum([x*x for x in range(20)])

можно воспользоваться выражением-генератором:

sum(x*x for x in range(20))

Использование данного способа ускоряет выполнение программы.
⚡️ Задача с собеседования | Уровень: #Easy

Условие:

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

Пример:
Ф-ция принимает:
"I learn Python with Python Nation!!!"

Ф-ция возвращает: "9 12 5 1 18 14 16 25 20 8 15 14 23 9 20 8 16 25 20 8 15 14 14 1 20 9 15 14"

📌Делитесь своим решением в комментариях👇

#задача_с_собеседования @pythonnation
Производительность Python

По производительности Python относительно медленный язык (по сравнению с C, Go, Java). Его скорость выполнения схожа с другими интерпретируемыми языками (PHP, Ruby). Однако возможность компиляции python-кода в байт-код позволяет добиться большей производительности.

Основные причины, из-за которых Python "медленный":

— GIL (глобальная блокировка интерпретатора).
— Динамическая типизация.
— Python это интерпретируемый, а не компилируемый язык.

Несмотря на это, в большинстве задач гораздо важнее быстро получить результат, нежели ускорить выполнение программы. Особенно это важно для бизнеса или стартапа, где критически важно быстро выпустить продукт в production и начать зарабатывать.
Мой код не работает!!! Что делать??

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

Ответ простой! Используйте библиотеку pywhatkit для этой задачи.
Результат сохраняется на одном уровне с исполняемым скриптом в виде PNG изображения.

К сожалению с кириллицей не работает.

Перед запуском кода установите пакет
pywhatkit:
pip install pywhatkit
Друзья, напишите в комментариях👇, что на ваш взгляд должно быть вместо знаков вопросов?
SOLID

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

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

#solid @pythonnation