Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Python. Практический
Скачиваем котировки
Объединить книги Excel
Объединить книги Excel 2
Создать Progress Bar
Объединить листы книги Excel
Объединить книги Excel и листы в них
Объединить множество CSV
Таблицы из множества интернет-страниц
Многостраничное извлечение таблиц с Requests и BS4
Скрапинг/Парсинг сайтов с Selenium и BS4
источник
@BookPython
Скачиваем котировки
Объединить книги Excel
Объединить книги Excel 2
Создать Progress Bar
Объединить листы книги Excel
Объединить книги Excel и листы в них
Объединить множество CSV
Таблицы из множества интернет-страниц
Многостраничное извлечение таблиц с Requests и BS4
Скрапинг/Парсинг сайтов с Selenium и BS4
источник
@BookPython
👍4🔥3
Шесть удивительных неизвестных библиотек Python
Последние два года я активно использую Python. В результате я постоянно нахожусь в поиске замечательных библиотек, которые могут улучшить мою работу в проектах по разработке данных и бизнес-аналитике.
1. Pendulum
2. ftfy
3. Sketch
4. pgeocode
5. rembg
6. Humanize
https://medium.com/@Divithraju/six-amazing-unknown-python-libraries-c7bdad6b4472
@BookPython
Последние два года я активно использую Python. В результате я постоянно нахожусь в поиске замечательных библиотек, которые могут улучшить мою работу в проектах по разработке данных и бизнес-аналитике.
1. Pendulum
2. ftfy
3. Sketch
4. pgeocode
5. rembg
6. Humanize
https://medium.com/@Divithraju/six-amazing-unknown-python-libraries-c7bdad6b4472
@BookPython
👍4
Python-проект - Рисуем Дораэмона
Многие из нас в детстве смотрели аниме-сериал “Дораэмон”. Дораэмон — это кот-робот, пришедший из будущего с целой коллекцией гаджетов. Попробуем нарисовать Дораэмона в Python.
Мы будем использовать библиотеку turtle, которая помогает создавать фигуры и картинки.
https://pythonflood.com/python-project-draw-doraemon-9c067ccca8c3
@BookPython
Многие из нас в детстве смотрели аниме-сериал “Дораэмон”. Дораэмон — это кот-робот, пришедший из будущего с целой коллекцией гаджетов. Попробуем нарисовать Дораэмона в Python.
Мы будем использовать библиотеку turtle, которая помогает создавать фигуры и картинки.
https://pythonflood.com/python-project-draw-doraemon-9c067ccca8c3
@BookPython
👍3💩1
Разработка идеального pypi пакета с поддержкой разных версий python
Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой:
Ориентирована на новичков, но призываю и профессионалов высказать свое мнение, как можно улучшить "идеальный" пакет.
Что значит "идеальный" пакет?
Буду исходить из следующих требований:
- Open source на github;
- Поддержка всех актуальных\популярных версий python (2.7, 3.5, 3.6, 3.7, 3.8);
- 100% покрытие юнит тестами;
- Использование CI:
- Актуальная документация;
- Кроссплатформенность разработки;
- Пакет полезен и делает мир лучше.
https://habr.com/ru/articles/483512/
@BookPython
Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой:
pip install my-perfect-package
Ориентирована на новичков, но призываю и профессионалов высказать свое мнение, как можно улучшить "идеальный" пакет.
Что значит "идеальный" пакет?
Буду исходить из следующих требований:
- Open source на github;
- Поддержка всех актуальных\популярных версий python (2.7, 3.5, 3.6, 3.7, 3.8);
- 100% покрытие юнит тестами;
- Использование CI:
- Актуальная документация;
- Кроссплатформенность разработки;
- Пакет полезен и делает мир лучше.
https://habr.com/ru/articles/483512/
@BookPython
Хабр
Разработка идеального pypi пакета с поддержкой разных версий python
Это небольшой мануал/история о том, как создать "идеальный" pypi пакет для python, который каждый желающий сможет установить заветной командой: pip install my-perfect-package Ориентирована на...
👍3
Media is too big
VIEW IN TELEGRAM
Простой способ развернуть телеграмм бота с Aiogram + Webhook на хостинг
Расскажу самый простой и бесплатный способ развернуть на хостинге телеграмм бота, написанного на aiogram и перевести на webhook.
Бот будет работать 24/7 пожизненно. 🙂
Без использования VPS, фреймворка (django, flask, fastapi,..), pythonanywhere и heroku.
Краткое описание действий:
1. Через FTP поместить наш файл бота на хостинге.
2. Через SSH установить библиотеку aiogram.
3. Настроить сервис бота на хостинге.
4. Настроить сайт на переадресацию всех запросов на сервис бота.
5. Отредактировать файл запуска бота с учетом наших настроек.
0:00 - Задачи
0:40 - О "Polling"
1:16 - О "Webhooks"
1:47 - Привязка токена и URL
2:17 - Запуск локально с ngrok
3:09 - Схема работы на хостинге
3:51 - Регистрация на хостинге
4:05 - Настройка FTP, SSH
4:37 - Подключение по FTP, установка Aiogram
5:06 - Настройка сервиса бота
6:37 - Настройка сайта, Redirect
7:55 - Редактирование файла бота, запуск
9:20 - Переход с "polling" на "webhook"
9:43 - Второй способ
https://habr.com/ru/articles/730310/
@BookPython
Расскажу самый простой и бесплатный способ развернуть на хостинге телеграмм бота, написанного на aiogram и перевести на webhook.
Бот будет работать 24/7 пожизненно. 🙂
Без использования VPS, фреймворка (django, flask, fastapi,..), pythonanywhere и heroku.
Краткое описание действий:
1. Через FTP поместить наш файл бота на хостинге.
2. Через SSH установить библиотеку aiogram.
3. Настроить сервис бота на хостинге.
4. Настроить сайт на переадресацию всех запросов на сервис бота.
5. Отредактировать файл запуска бота с учетом наших настроек.
0:00 - Задачи
0:40 - О "Polling"
1:16 - О "Webhooks"
1:47 - Привязка токена и URL
2:17 - Запуск локально с ngrok
3:09 - Схема работы на хостинге
3:51 - Регистрация на хостинге
4:05 - Настройка FTP, SSH
4:37 - Подключение по FTP, установка Aiogram
5:06 - Настройка сервиса бота
6:37 - Настройка сайта, Redirect
7:55 - Редактирование файла бота, запуск
9:20 - Переход с "polling" на "webhook"
9:43 - Второй способ
https://habr.com/ru/articles/730310/
@BookPython
👍5🔥1
Асинхронный файловый api-сервис
Идея написать данную статью родилась после моего фейла по разработке данного сервиса. Суть задачи была проста — написать сервер с базовыми методами сохранения и отдачи файлов и сервисными методами по специфичной обработке файлов. Обмен данными (тело запроса, возвращаемые данные) я реализовал через json, про асинхрон идею упустил. По началу всё было хорошо, файлы не превышали размер нескольких мегабайтов, методы использовались редко. Но буквально через пару месяцев размеры файлов стали измеряться десятками мегабайт, количество запросов сотни в минуту. Сервис стал тормозить, возникали ошибки совместного доступа к файлам. «Никогда Штирлиц не был так близок к провалу».
В этом кейсе я покажу как я переписал код базовых методов.
В проекте будут использованы библиотеки asyncio, aiohttp для обеспечения асинхронности сервиса.
https://habr.com/ru/articles/729340/
@BookPython
Идея написать данную статью родилась после моего фейла по разработке данного сервиса. Суть задачи была проста — написать сервер с базовыми методами сохранения и отдачи файлов и сервисными методами по специфичной обработке файлов. Обмен данными (тело запроса, возвращаемые данные) я реализовал через json, про асинхрон идею упустил. По началу всё было хорошо, файлы не превышали размер нескольких мегабайтов, методы использовались редко. Но буквально через пару месяцев размеры файлов стали измеряться десятками мегабайт, количество запросов сотни в минуту. Сервис стал тормозить, возникали ошибки совместного доступа к файлам. «Никогда Штирлиц не был так близок к провалу».
В этом кейсе я покажу как я переписал код базовых методов.
В проекте будут использованы библиотеки asyncio, aiohttp для обеспечения асинхронности сервиса.
https://habr.com/ru/articles/729340/
@BookPython
👍4
Пишем простой ML веб-сервис на FastAPI
Данный туториал пошагово разбирает процесс создания веб-приложения для определения тональности текста на основе NLP-модели.
Мы будем использовать модель из библиотеки Hugging Face Hub, но описанный подход подойдет для любой задачи машинного обучения.
План:
Загрузка и подготовка модели машинного обучения для использования в веб-сервисе.
Создание веб-сервиса с помощью FastAPI.
Изучение пользовательского интерфейса FastAPI для удобного ручного тестирования и демонстрации работы приложения.
Написание автоматических тестов с помощью библиотеки pytest.
Запуск приложения в Docker-контейнере.
Код доступен на GitHub.
https://habr.com/ru/articles/729380/
@BookPython
Данный туториал пошагово разбирает процесс создания веб-приложения для определения тональности текста на основе NLP-модели.
Мы будем использовать модель из библиотеки Hugging Face Hub, но описанный подход подойдет для любой задачи машинного обучения.
План:
Загрузка и подготовка модели машинного обучения для использования в веб-сервисе.
Создание веб-сервиса с помощью FastAPI.
Изучение пользовательского интерфейса FastAPI для удобного ручного тестирования и демонстрации работы приложения.
Написание автоматических тестов с помощью библиотеки pytest.
Запуск приложения в Docker-контейнере.
Код доступен на GitHub.
https://habr.com/ru/articles/729380/
@BookPython
👍7❤1
Декораторы в python
Как устроены декораторы в python?
Как передать аргументы в декоратор?
Делаем предобработку аргументов в декораторе в python
источник
@BookPython
Как устроены декораторы в python?
Как передать аргументы в декоратор?
Делаем предобработку аргументов в декораторе в python
источник
@BookPython
👍5
Советы по Python
1. Распаковка элементов массива
2. Обмен значений переменных
3. Профилирование и статистика кода
4. Повторение строки
5. Срез
@BookPython
1. Распаковка элементов массива
first_name, last_name = [‘Farhad’, ‘Malik’]
print(first_name) #выводится Farhad
print(last_name) #выводится Malik
2. Обмен значений переменных
first_name, last_name = [‘Farhad’, ‘Malik’]
last_name, first_name = first_name, last_name
print(first_name) #выводит Malik
print(last_name) #выводит Farhad
3. Профилирование и статистика кода
import cProfile, pstats, StringIO
pr = cProfile.Profile() pr.enable()
# ... что-то делает ... pr.disable()
s = StringIO.StringIO()
ps = pstats.Stats(pr, stream=s).sort_stats(‘cumulative’)
ps.print_stats()
print s.getvalue()
4. Повторение строки
‘A’*3 А повторится трижды: AAA
5. Срез
y = ‘Abc’
y[:2] = ab
y[1:] = bc
y[:-2] = a
y[-2:] = bc
@BookPython
👍3
Советы по Python
1. Реверс
2. Отрицательный индекс
Если вы хотите начать с последнего знака, то воспользуйтесь отрицательным индексом.
3. Пересечение множеств
Чтобы найти общее двух множеств
4. Разность множеств
Чтобы найти различия двух множеств:
5. Объединение коллекций
Чтобы получить четко выраженное объединение двух множеств
@BookPython
1. Реверс
x = ‘abc’
x = x[::-1]
2. Отрицательный индекс
Если вы хотите начать с последнего знака, то воспользуйтесь отрицательным индексом.
y = ‘abc’
print(y[-1]) # вернет "c"
3. Пересечение множеств
Чтобы найти общее двух множеств
a = {1,2,3}
b = {3,4,5}
c = a.intersection(b)
4. Разность множеств
Чтобы найти различия двух множеств:
a = {1,2,3}
b = {3,4,5}
c = a.difference(b)
5. Объединение коллекций
Чтобы получить четко выраженное объединение двух множеств
a = {1,2,3}
b = {3,4,5}
c = a.union(b)
@BookPython
👍8
Советы по Python
1. Необязательные аргументы
Мы можем передавать необязательные аргументы через присвоение стандартного значения аргументу:
2. Неизвестное количество аргументов через *arguments
Если функция может принимать любое количество аргументов, то перед названием параметра добавьте *:
3. Словарь в качестве аргумента через **arguments
Так вы сможете передавать в функцию разное количество аргументов ключевых слов.
В качестве аргументов ключевых слов можно также передавать и значения словаря:
4. Функция с несколькими выводами
Если функция должна возвращать несколько значений, то:
5. Цикл в одну строку
@BookPython
1. Необязательные аргументы
Мы можем передавать необязательные аргументы через присвоение стандартного значения аргументу:
def my_new_function(my_value=’hello’):
print(my_value)
#Вызывается
my_new_function() => выводит hello
my_new_function(‘test’) => выводит test
2. Неизвестное количество аргументов через *arguments
Если функция может принимать любое количество аргументов, то перед названием параметра добавьте *:
def myfunc(*arguments):
for a in arguments:
print a
myfunc(a)
myfunc(a,b)
myfunc(a,b,c)
3. Словарь в качестве аргумента через **arguments
Так вы сможете передавать в функцию разное количество аргументов ключевых слов.
В качестве аргументов ключевых слов можно также передавать и значения словаря:
def myfunc(**arguments):
return arguments[‘key’]
4. Функция с несколькими выводами
Если функция должна возвращать несколько значений, то:
resultA, resultB = get_result()
get_result() может вернуть (‘a’, 1), который является кортежем
5. Цикл в одну строку
[Variable] AggregateFunction([Value] for [item] in [collection])
@BookPython
👍3🌚1
Всем, привет, мы исследовательское агентство SmartMinds и сейчас проводим опрос среди IT специалистов. Что хотим узнать: что важно при выборе работодателя, какие каналы являются эффективными при поиске работы и ходите ли вы на мероприятия для IT. Опрос анонимный, займет не более 3-х минут и мы будем благодарны всем, кто примет участие ❤️
Пройти опрос
Пройти опрос
👍1
Советы по Python
1. Объединение списков с помощью Zip
Берет несколько коллекций и возвращает новую коллекцию.
Каждый элемент новой коллекции содержит по одному элементу из всех исходных коллекций.
Так мы получаем «пересечения» сразу по нескольким коллекциям
2. Освобождение памяти
Механизм сборки мусора вручную можно настроить по времени или событиям.
3. Использование декораторов
Декораторы добавляют функциональность коду. То есть это функции, вызывающие другие объекты/функции. Будучи вызываемыми функциями, декораторы возвращают объект, который будет вызываться при вызове функции-декоратора.
Вспомните о декораторах, которые реализуют аспектно-ориентированное программирование.
Мы можем обернуть класс/функцию, и тогда каждый раз при вызове функции будет выполняться определенный код.
Данный пример показывает, как можно вывести название функции. Это тестовый пример для вызова декоратора. С помощью декораторов можно вызывать логгеры (logger), выполнять операции по обеспечению безопасности и т.д.
Теперь воспользуйтесь этим в своих функциях:
4. Распаковка
5. Присоединение коллекции
@BookPython
1. Объединение списков с помощью Zip
Берет несколько коллекций и возвращает новую коллекцию.
Каждый элемент новой коллекции содержит по одному элементу из всех исходных коллекций.
Так мы получаем «пересечения» сразу по нескольким коллекциям
name = ‘farhad’
suffix = [1,2,3,4,5,6]
zip(name, suffix)
→ возвращает (f,1),(a,2),(r,3),(h,4),(a,5),(d,6)
2. Освобождение памяти
Механизм сборки мусора вручную можно настроить по времени или событиям.
import gc
collected_objects = gc.collect()
3. Использование декораторов
Декораторы добавляют функциональность коду. То есть это функции, вызывающие другие объекты/функции. Будучи вызываемыми функциями, декораторы возвращают объект, который будет вызываться при вызове функции-декоратора.
Вспомните о декораторах, которые реализуют аспектно-ориентированное программирование.
Мы можем обернуть класс/функцию, и тогда каждый раз при вызове функции будет выполняться определенный код.
Данный пример показывает, как можно вывести название функции. Это тестовый пример для вызова декоратора. С помощью декораторов можно вызывать логгеры (logger), выполнять операции по обеспечению безопасности и т.д.
def my_logger(function):
@functools.wraps(function)
def logger(*args, **kwargs):
print(function.__name__)
return function(*args, **kwargs)
return logger
Теперь воспользуйтесь этим в своих функциях:
@my_logger
def hi():
print ‘hi’
@my_logger
def bye(a):
print ‘bye’ + a
4. Распаковка
name = ‘farhad’
suffix = [1,2,3,4,5,6]
result = zip(name, suffix)
→ возвращает (f,1),(a,2),(r,3),(h,4),(a,5),(d,6)
unzipped = zip(*result)
5. Присоединение коллекции
name = [“FinTech”, “Explained”]
print(“ “.join(name))
@BookPython
👍3
Советы по Python
1. Объем памяти объекта
2. Вывод текущей директории
3. Вывод импортированных модулей
4. Получение ID текущего процесса
@BookPython
1. Объем памяти объекта
import sys
x = ‘farhadmalik’
print(sys.getsizeof(x))
2. Вывод текущей директории
import os
print(os.getcwd())
3. Вывод импортированных модулей
import sys
imported_modules = [m.__name__ for m in sys.modules.values() if m]
4. Получение ID текущего процесса
import os
os.getpid()
@BookPython
👍3
Python-скрипт на 20 строк, который каждый день желает родителям доброго утра через WhatsApp
Автор материала, перевод которого мы сегодня публикуем, говорит, что современные люди, жизнь которых переполнена работой, часто забывают писать сообщения своим родным и близким. Он, глядя на то, как его родители каждое утро шлют ему в WhatsApp вдохновляющие цитаты и полезные советы о здоровье, решил, что пришло время ответить им взаимностью.
В этом руководстве мы напишем простой Python-скрипт, предназначенный для отправки WhatsApp-сообщений. В ходе работы будем пользоваться Python-пакетом Twilio. Для организации ежеднев
Rus https://habr.com/ru/companies/ruvds/articles/463933/
Eng https://betterprogramming.pub/i-wrote-a-script-to-whatsapp-my-parents-every-morning-in-just-20-lines-of-python-code-5d203c3b36c1
@BookPython
Автор материала, перевод которого мы сегодня публикуем, говорит, что современные люди, жизнь которых переполнена работой, часто забывают писать сообщения своим родным и близким. Он, глядя на то, как его родители каждое утро шлют ему в WhatsApp вдохновляющие цитаты и полезные советы о здоровье, решил, что пришло время ответить им взаимностью.
В этом руководстве мы напишем простой Python-скрипт, предназначенный для отправки WhatsApp-сообщений. В ходе работы будем пользоваться Python-пакетом Twilio. Для организации ежеднев
Rus https://habr.com/ru/companies/ruvds/articles/463933/
Eng https://betterprogramming.pub/i-wrote-a-script-to-whatsapp-my-parents-every-morning-in-just-20-lines-of-python-code-5d203c3b36c1
@BookPython
👍3🔥2
Потрясающе быстрые сборки Docker на Python с помощью Poetry 🏃
Как превратить медленные и утомительные сборки Docker в бесперебойную работу
Создание образов Docker для вашего проекта обычно подразумевает установку его зависимостей воспроизводимым и детерминированным способом. В сообществе Python Poetry является одним из наиболее популярных инструментов для достижения этой цели. Однако неоптимальное использование Poetry в сборках Docker может привести к низкой производительности и длительным сборкам, что в конечном итоге снижает производительность разработчика.
https://medium.com/@albertazzir/blazing-fast-python-docker-builds-with-poetry-a78a66f5aed0
@BookPython
Как превратить медленные и утомительные сборки Docker в бесперебойную работу
Создание образов Docker для вашего проекта обычно подразумевает установку его зависимостей воспроизводимым и детерминированным способом. В сообществе Python Poetry является одним из наиболее популярных инструментов для достижения этой цели. Однако неоптимальное использование Poetry в сборках Docker может привести к низкой производительности и длительным сборкам, что в конечном итоге снижает производительность разработчика.
https://medium.com/@albertazzir/blazing-fast-python-docker-builds-with-poetry-a78a66f5aed0
@BookPython
👍2