Forwarded from Python Academy
Анонимные функции
Анонимные функции являются крайне полезным аспектом, которым либо пренебрегают, либо чрезмерно пользуются. Новичкам они могут показаться сложными, но это совсем не так.
В целом, структура очень простая –
Такие функции чаще всего используются, когда они больше нигде не понадобятся, то есть определять полноценную функцию нет смысла. Типичные примеры использования –
#функции #lambda
Анонимные функции являются крайне полезным аспектом, которым либо пренебрегают, либо чрезмерно пользуются. Новичкам они могут показаться сложными, но это совсем не так.
В целом, структура очень простая –
lambda <arguments>: <expression>
. Сначала пишете ключевое слово lambda
, далее аргументы, двоеточие и какое-то выражение, результат которого автоматически вернется.Такие функции чаще всего используются, когда они больше нигде не понадобятся, то есть определять полноценную функцию нет смысла. Типичные примеры использования –
map
и filter
.#функции #lambda
Forwarded from Python Academy
Дробные числа
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Поэтому для идеальных вычислений лучше использовать
#числа #fraction
По умолчанию числа с плавающей точкой используют память привычным образом, то есть они хранятся в двоичном виде. Это означает, что вы обычно работаете с приблизительными значениями, а не точными.
Можно использовать тип данных
Decimal
, который предоставит намного большую точность, но и его может не хватить в некоторых случаях. Поэтому для идеальных вычислений лучше использовать
Fraction
, который представляет и хранит число в виде рациональной дроби.#числа #fraction
Forwarded from Python Academy
Находим соответствия в строках
В стандартной библиотеке Python существует модуль
Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент – список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
#difflib #строки
В стандартной библиотеке Python существует модуль
difflib
, в котором есть интересный метод get_close_matches
. Он позволяет найти в списке строки, похожие на некую исходную.Данный метод ищет "наилучшие" возможные совпадения. Первый аргумент задаёт искомую строку, второй аргумент – список, в котором выполняется поиск.
Также в метод можно передать необязательный аргумент
n
, который задаёт максимальное число возвращаемых совпадений.#difflib #строки
Forwarded from Python Academy
Модуль subprocess
Всем доброго вечера, сегодня мы поговорим немного о модуле
Данный модуль предоставляет унифицированный интерфейс для создания дополнительных процессов с вызовом программ, а также может подключать к стандартным потокам ввода, вывода и вывода об ошибках. Модуль был добавлен в стандартную библиотеку
Для создания процессов в
Сегодня мы расскажем о функциях
Для захвата вывода процесса нам нужно передать
Иногда программа ожидает от нас ввода из стандартного потока
Для того, чтобы породить исключение в случае получения кода возврата об ошибке мы можем передать флаг
И как бонус у этой функции есть аргумент
#процессы #subprocess
Всем доброго вечера, сегодня мы поговорим немного о модуле
subprocess
:)Данный модуль предоставляет унифицированный интерфейс для создания дополнительных процессов с вызовом программ, а также может подключать к стандартным потокам ввода, вывода и вывода об ошибках. Модуль был добавлен в стандартную библиотеку
python
на замену os.system()
и os.popen()
.Для создания процессов в
subprocess
используются функции run()
, call()
, check_call()
, check_output()
, а также класс Popen
.Сегодня мы расскажем о функциях
call
, check_call
, check_output
и run
, а завтра поговорим о Popen. Они используются, когда требуется запустить программу и дождаться ее выполнения.call
- вызывается для создания процесса, ожидает выполнения и возвращает код выполнения (если программа отработала корректно, вернется 0).check_call
- делает тоже самое только еще и проверяет возвращаемое значение, если код выхода указывает, что произошла ошибка, то функция выбросит исключение CalledProcessError
. check_output
- использовалась, когда нужно было захватить вывод запущенного процесса. Эта функция была нужна, так как потоки ввода и вывода запущенного процесса через call
привязывались именно к вводу и выводу данного процесса, поэтому вывод таким образом захватить не получится.run
- это функция пришла в python версии 3.5 на замену трем предыдущим и умеет все, что и они и немножко больше (данные три функции были оставлены для обратной совместимости). run()
возвращает объект CompletedProcess
, который привязан к результату. Для захвата вывода процесса нам нужно передать
capture_output=True
, после чего в аргументах объекта stdout
и stderr
будут записаны соответствующие выводы, запущенной программы. Но по умолчанию вывод будет вывод будет в байтах, чтобы получить читабельный текст мы также передаем флаг text=True
. Иногда программа ожидает от нас ввода из стандартного потока
stdin
, в этом случае мы можем передать ввод через аргумент input
.Для того, чтобы породить исключение в случае получения кода возврата об ошибке мы можем передать флаг
check=True
. И как бонус у этой функции есть аргумент
timeout
позволяющий передать время, через которое процесс должен быть принудительно завершен. В случае принудительного завершения будет выброшено исключение TimeoutExpired
.#процессы #subprocess
Forwarded from Python Academy
Генераторы
В этом посте освежим знания про генераторы, чтобы далее разобрать такую интересную тему, как корутины.
Функции-генераторы выглядят как и обычные, но содержат выражения с ключевым словом
Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции
Если генератору больше нечего возвращать, то будет вызвано исключение
#генераторы
В этом посте освежим знания про генераторы, чтобы далее разобрать такую интересную тему, как корутины.
Функции-генераторы выглядят как и обычные, но содержат выражения с ключевым словом
yield
для последовательного генерирования значений. В целом, генератор – это особый, более изящный случай итератора.Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции
next
или циклом for
.Если генератору больше нечего возвращать, то будет вызвано исключение
StopIteration
.#генераторы
Forwarded from Python Academy
FastAPI
Недавно на канале вышел пост про асинхронный фреймворк Tornado, и в комментариях подписчик упомянул FastAPI, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
#фреймворки #web
Недавно на канале вышел пост про асинхронный фреймворк Tornado, и в комментариях подписчик упомянул FastAPI, про который однозначно стоит рассказать. Честно, синтаксис мне кажется намного приятнее, чем у других фреймворков.
Интересно, что автор фреймворка глубоко изучил несколько других фреймворков, от классических, таких как Django, до более современных, таких как Sanic, а также изучил различные технологии в NestJS (веб-фреймворк Node.js, Typescript).
Фреймворк имеет важную особенность – автоматическая генерация документации: как только ваши конечные точки будут реализованы, вы сможете поиграться с API, используя соответствующий стандартам пользовательский интерфейс. Поддерживаются SwaggerUI, ReDoc и другие.
FastAPI построен на удивительной библиотеке Starlette, в результате чего производительность сравнима с Node.js, а в некоторых случаях даже Go! В целом, складывается стойкое предчувствие, что FastAPI будет мчаться вперёд как лучший асинхронный фреймворк для Python.
#фреймворки #web
Forwarded from Python Academy
Tornado
На удивление, Tornado – достаточно старый фреймворк. Самый первый релиз был выпущен в далёком 2009 году, и сейчас его основное внимание направлено на обеспечении надежного асинхронного программирования с высоким параллелизмом.
Tornado изначально не являлся веб-фреймворком. На самом деле это просто набор асинхронных модулей, которые используются для построения модулей веб-фреймворка. Если более конкретно, то вот эти модули:
– Корутины и другие примитивы (
– Сетевые модули (
– Асинхронные сервера и клиенты (
Они были совмещены для получения финальный модулей фреймворка:
#фреймворки #web
На удивление, Tornado – достаточно старый фреймворк. Самый первый релиз был выпущен в далёком 2009 году, и сейчас его основное внимание направлено на обеспечении надежного асинхронного программирования с высоким параллелизмом.
Tornado изначально не являлся веб-фреймворком. На самом деле это просто набор асинхронных модулей, которые используются для построения модулей веб-фреймворка. Если более конкретно, то вот эти модули:
– Корутины и другие примитивы (
tornado.gen
, tornado.locks
, tornado.queues
и т. д.)– Сетевые модули (
tornado.ioloop
, tornado.iostream
и т. д.)– Асинхронные сервера и клиенты (
tornado.httpserver
, tornado.httpclient
и т. д.)Они были совмещены для получения финальный модулей фреймворка:
tornado.web
, tornado.routing
, tornado.template
и тому подобные.#фреймворки #web
Forwarded from 🐍 PythonGuru — работа и стажировки для программистов
Слив курса - Разработка Telegram ботов на Python
Описание и структура курса:
Научись разрабатывать ботов любой сложности для месседжера Telegram. В этом подробном курсе построение ботов от А до Я.
- Как работать с API Telegram
- Преимущества и принципы разработки ботов на асинхронной библиотеке Aiogram
- Использовать язык программирования Python для написания ботов
- Взаимодействие между ботами, чатами, каналами и группами
- Создание кнопок, режим инлайн, deeplinking
- Как использовать Базы данных в ботах (PostgreSQL и SQLite)
- Работа с удаленным сервером на Ubuntu
- Много много прочего
Скачать с Mail облака
Описание и структура курса:
Научись разрабатывать ботов любой сложности для месседжера Telegram. В этом подробном курсе построение ботов от А до Я.
- Как работать с API Telegram
- Преимущества и принципы разработки ботов на асинхронной библиотеке Aiogram
- Использовать язык программирования Python для написания ботов
- Взаимодействие между ботами, чатами, каналами и группами
- Создание кнопок, режим инлайн, deeplinking
- Как использовать Базы данных в ботах (PostgreSQL и SQLite)
- Работа с удаленным сервером на Ubuntu
- Много много прочего
Скачать с Mail облака
Forwarded from Python Lounge: работа и стажировки для программистов
В Python имя переменной может состоять из одного подчеркивания: _. Хотя обычно такие имена не достаточно описательны и не должны использоваться, есть по крайней мере три случая, когда _ имеет общепринятый смысл.
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
Во-первых, интерактивные интерпретаторы Python используют _ для хранения результата последнего выполненного выражения:
>>> 2 + 2Во-вторых, руководство модуля gettext рекомендует псевдоним его функции gettext() для _(), чтобы минимизировать загромождение вашего кода.
4
>>> _
4
В-третьих, _ используется, когда вам нужно придумать имена для значений, которые вам не нужны:
for _ in range(10):
print('Hello!')
Forwarded from Python Resources
Forwarded from Moscow Python (Valentin Dombrovsky)
В эту пятницу в 19 часов - очередной Python-стрим. На этот раз мы поговорим о том, зачем качать понимание экосистемы Пайтона с Алексеем Пироговым и Никитой Соболевым из Drylabs! https://www.youtube.com/watch?v=llMvi3p50c0
YouTube
Python-стрим - Качаем понимание экосистемы Пайтона!
Мы продолжаем Python-стримы - на этот раз у нас сразу 2 гостя: СТО Drylabs Никита Соболев и ментор Python в Drylabs Алексей Пирогов.
С 1-го по 15-е декабря Drylabs проведёт серию вебинаров под общим названием "Python-карантин. Вторая волна".
Темы вебинаров:…
С 1-го по 15-е декабря Drylabs проведёт серию вебинаров под общим названием "Python-карантин. Вторая волна".
Темы вебинаров:…
Forwarded from CoolPython
Работа с JSON
Хотела собрать для менти ссылок по работе с JSON, но не нашла, чтобы в одном месте последовательно, исчерпывающе и без воды рассказали бы все самое важное, что питонисту нужно знать о работе с этим форматом.
Поэтому сделала лонгрид по JSON'у сама и делюсь с вами! Статью в PDF можно посмотреть на моем Patreon'e, она бесплатная. Рассчитана на уровень джуниоров и стажеров. В канал выложить не могу, потому что слишком много текста, а в тексте картинки, схемы и даже один мем!
Из головных болей: не получилось сверстать так идеально, как хотелось. Начала с LaTeX, поняла, что верстается долго, перешла в markdown, но там некрасиво легли картинки. Наконец, сделала в Notion и все равно недовольна. Дайте знать, если умеете красиво верстать без боли и адских страданий или можете рассказать, на какой платформе вам удобнее читать лонгриды.
🐠
Хотела собрать для менти ссылок по работе с JSON, но не нашла, чтобы в одном месте последовательно, исчерпывающе и без воды рассказали бы все самое важное, что питонисту нужно знать о работе с этим форматом.
Поэтому сделала лонгрид по JSON'у сама и делюсь с вами! Статью в PDF можно посмотреть на моем Patreon'e, она бесплатная. Рассчитана на уровень джуниоров и стажеров. В канал выложить не могу, потому что слишком много текста, а в тексте картинки, схемы и даже один мем!
Из головных болей: не получилось сверстать так идеально, как хотелось. Начала с LaTeX, поняла, что верстается долго, перешла в markdown, но там некрасиво легли картинки. Наконец, сделала в Notion и все равно недовольна. Дайте знать, если умеете красиво верстать без боли и адских страданий или можете рассказать, на какой платформе вам удобнее читать лонгриды.
🐠
Forwarded from Pythonist.ru - образование по питону
Задача с кодом. Список файлов в директории
Условие: Выведите список файлов в заданной директории.
Решение на нашем сайте. Совет: прежде чем смотреть решение, потратьте хотя бы 30 минут на написание своего собственного кода, т.к. лучше подумать и не решить, чем решить, но не подумать.
#задача #coding
Условие: Выведите список файлов в заданной директории.
Решение на нашем сайте. Совет: прежде чем смотреть решение, потратьте хотя бы 30 минут на написание своего собственного кода, т.к. лучше подумать и не решить, чем решить, но не подумать.
#задача #coding
Forwarded from Pythonist.ru - образование по питону
Топ. 7 фишек Python, максимально улучшающих твой код
Рассказываем об особенностях языка Python, позволяющих писать более лаконичный и читаемый код.
Читать статью
#топ
Рассказываем об особенностях языка Python, позволяющих писать более лаконичный и читаемый код.
Читать статью
#топ
Forwarded from Pythonist.ru - образование по питону
Tips & Tricks. Как разбить строку на символы в Python?
В этой статье мы разберем, как в Python можно разбить строку на символы, в том числе с использованием встроенной функции list() и цикла for.
Читать статью
#строки #функции
В этой статье мы разберем, как в Python можно разбить строку на символы, в том числе с использованием встроенной функции list() и цикла for.
Читать статью
#строки #функции
Forwarded from Pythonist.ru - образование по питону
Задача с кодом. Пишем функцию для «тупого добавления»
Условие: Создайте функцию, которая принимает два параметра. Если оба параметра — строки, то сложите их математически, если оба — integer, тогда сконкатенируйте их. Если параметры разного типа — верните None.
Примеры:
stupid_addition(1, 2) ➞ "12"
stupid_addition("1", "2") ➞ 3
stupid_addition("1", 2) ➞ None
Решение на нашем сайте. Совет: прежде чем смотреть решение, потратьте хотя бы 30 минут на написание своего собственного кода, т.к. лучше подумать и не решить, чем решить, но не подумать.
#задача #coding
Условие: Создайте функцию, которая принимает два параметра. Если оба параметра — строки, то сложите их математически, если оба — integer, тогда сконкатенируйте их. Если параметры разного типа — верните None.
Примеры:
stupid_addition(1, 2) ➞ "12"
stupid_addition("1", "2") ➞ 3
stupid_addition("1", 2) ➞ None
Решение на нашем сайте. Совет: прежде чем смотреть решение, потратьте хотя бы 30 минут на написание своего собственного кода, т.к. лучше подумать и не решить, чем решить, но не подумать.
#задача #coding
Forwarded from Pythonist.ru - образование по питону
Топ. 10 проектов в 10 строк кода
Учиться программировать лучше всего на простых проектах. Онлайн-клуб для разработчиков и исследователей предлагает создать 10 проектов на Python, каждый из которых можно уложить в 10 строк кода.
Читать статью
#топ
Учиться программировать лучше всего на простых проектах. Онлайн-клуб для разработчиков и исследователей предлагает создать 10 проектов на Python, каждый из которых можно уложить в 10 строк кода.
Читать статью
#топ
Forwarded from Pythonist.ru - образование по питону
Топ. Python 3: изменяемый, неизменяемый…
Рассказываем с самого начала, чем изменяемые объекты отличаются от неизменяемых и как это проявляется на практике. Также затрагиваем тему преаллокации и передачи аргументов в функции.
Читать статью
#ооп
Рассказываем с самого начала, чем изменяемые объекты отличаются от неизменяемых и как это проявляется на практике. Также затрагиваем тему преаллокации и передачи аргументов в функции.
Читать статью
#ооп
Forwarded from Pythonist.ru - образование по питону
Django. Что нового в третьей версии фреймворка?
Рассматриваем новые функции, появившиеся в Django 3, а также рассказываем, что удалено в новой версии.
Читать статью
#django
Рассматриваем новые функции, появившиеся в Django 3, а также рассказываем, что удалено в новой версии.
Читать статью
#django
Forwarded from Python Academy
Композиция классов
Один из способов организации взаимодействия между классами – это композиция, или же ассоциация, классов.
В этом случае один из классов (в примере выше это
Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора. В таком случае необходимо использовать слабые ссылки из модуля
#классы #ооп
Один из способов организации взаимодействия между классами – это композиция, или же ассоциация, классов.
В этом случае один из классов (в примере выше это
Salary
) является полем другого (Employee
). Сложного здесь, как вы видите, ничего нет.Ассоциированные объекты зачастую могут циклически ссылаться друг на друга, что ломает стандартный механизм сборки мусора. В таком случае необходимо использовать слабые ссылки из модуля
weakref
, о котором поговорим позже.#классы #ооп