Всем привет! Сегодня 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
⚡️ Задача с собеседования | Уровень: #Easy
Условие:
Создать функцию которая принимает число и возвращает "Even" для чётных чисел и "Odd" для нечётных.
Пример:
#задача_с_собеседования @pythonnation
Условие:
Создать функцию которая принимает число и возвращает "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:
Интересное расширение 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
Условие:
Создать функцию которая принимает строку и заменяет каждую букву на её позицию в алфавите. Если что-то в тексте не является буквой, игнорируйте это и не возвращайте. На выходе получаем строку.
Пример:
Ф-ция принимает:
#задача_с_собеседования @pythonnation
Условие:
Создать функцию которая принимает строку и заменяет каждую букву на её позицию в алфавите. Если что-то в тексте не является буквой, игнорируйте это и не возвращайте. На выходе получаем строку.
Пример:
Ф-ция принимает:
"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 относительно медленный язык (по сравнению с C, Go, Java). Его скорость выполнения схожа с другими интерпретируемыми языками (PHP, Ruby). Однако возможность компиляции python-кода в байт-код позволяет добиться большей производительности.
Основные причины, из-за которых Python "медленный":
— GIL (глобальная блокировка интерпретатора).
— Динамическая типизация.
— Python это интерпретируемый, а не компилируемый язык.
Несмотря на это, в большинстве задач гораздо важнее быстро получить результат, нежели ускорить выполнение программы. Особенно это важно для бизнеса или стартапа, где критически важно быстро выпустить продукт в production и начать зарабатывать.
Как преобразовать напечатанный текст в рукописный текст с помощью Python?
Ответ простой! Используйте библиотеку
Результат сохраняется на одном уровне с исполняемым скриптом в виде PNG изображения.
К сожалению с кириллицей не работает.
Перед запуском кода установите пакет
Ответ простой! Используйте библиотеку
pywhatkit
для этой задачи.Результат сохраняется на одном уровне с исполняемым скриптом в виде PNG изображения.
К сожалению с кириллицей не работает.
Перед запуском кода установите пакет
pywhatkit
:pip install pywhatkit
SOLID
SOLID это пять принципов объектно-ориентированного программирования, которые задают архитектуру программы.
При правильной реализации это делает ваш код более расширяемым, логичным и легким для чтения.
В следующих постах я попытаюсь объяснить принципы SOLID на примере Python в как можно более простой форме, чтобы все смогли разобраться. Чтобы было очень легко взять представленные примеры и применить их на Python.
#solid @pythonnation
SOLID это пять принципов объектно-ориентированного программирования, которые задают архитектуру программы.
При правильной реализации это делает ваш код более расширяемым, логичным и легким для чтения.
В следующих постах я попытаюсь объяснить принципы SOLID на примере Python в как можно более простой форме, чтобы все смогли разобраться. Чтобы было очень легко взять представленные примеры и применить их на Python.
#solid @pythonnation
The Single Responsibility Principle
Принцип единой ответственности, то есть один класс решает одну задачу и у класса должна быть только одна причина для изменения. Если класс задает направление движения машины, то этот класс не должен выполнять какие-либо другие задачи. Таким образом, данный принцип помогает разбивать общую конструкцию на независимые модули и уменьшать межмодульную связью.
#solid @pythonnation
Принцип единой ответственности, то есть один класс решает одну задачу и у класса должна быть только одна причина для изменения. Если класс задает направление движения машины, то этот класс не должен выполнять какие-либо другие задачи. Таким образом, данный принцип помогает разбивать общую конструкцию на независимые модули и уменьшать межмодульную связью.
#solid @pythonnation
Python — отличный скриптовый язык. Но иногда стандартные библиотеки
Библиотека
Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.
Библиотека
#sh @pythonnation
os
и subprocess
вызывают только головную боль.Библиотека
sh
может стать приятной альтернативой.Она позволяет вызывать любую программу как обычную функцию, что полезно для автоматизации различных задач исключительно с помощью Python.
Библиотека
sh
поддерживает только платформы Linux и macOS. Для работы на Windows нужно поискать другой инструмент.#sh @pythonnation
The Open Closed Principle
Принцип открытости/закрытости. Если понадобилось добавить новую функциональность к классу, то существующий класс не модифицируем, а создаем наследника класса с новыми возможностями. То есть у нас должна быть возможность расширять класс без изменения самого класса.
#solid @pythonnation
Принцип открытости/закрытости. Если понадобилось добавить новую функциональность к классу, то существующий класс не модифицируем, а создаем наследника класса с новыми возможностями. То есть у нас должна быть возможность расширять класс без изменения самого класса.
#solid @pythonnation
The Liskov Substitution Principle
Принцип подстановки Лисков, описывающий возможности заменяемости экземпляров объектов. Простыми словами: дочерний класс должен следовать принципам родительского класса и не изменять их. Пусть у нас есть класс
#solid @pythonnation
Принцип подстановки Лисков, описывающий возможности заменяемости экземпляров объектов. Простыми словами: дочерний класс должен следовать принципам родительского класса и не изменять их. Пусть у нас есть класс
Прямоугольник
с методами, задающими ширину, высоту и рассчитывающим площадь. Теперь мы захотели создать класс Квадрат
. Квадрат – тот же самый прямоугольник, но с одинаковыми сторонами. Класс Квадрат
наследуется от класса Прямоугольник
и переопределяет его методы: подставляем значения – все работает. Но если мы начнем использовать класс Прямоугольник
в качестве интерфейса, а работать будем с классом Квадрат
, мы разом изменяем оба параметра. Чтобы решить эту проблему, создается общий интерфейс для обоих классов и вместо наследования одного класса от другого использовать этот самый интерфейс.#solid @pythonnation