Библиотека питониста | Python, Django, Flask
40.5K subscribers
2.78K photos
75 videos
51 files
4.36K links
Все самое полезное для питониста в одном канале.

Список наших каналов: https://t.me/proglibrary/9197

Курс по ML: https://cl

Для обратной связи: @proglibrary_feeedback_bot

По рекламе: @proglib_adv
РКН: https://gosuslugi.ru/snet/67b885cbd501cf3b2cdb5b36
Download Telegram
Как и где практиковать свои навыки в Python, чтобы получить работу мечты

Отрабатывайте свои навыки в таких областях, как структуры данных и алгоритмы, системный дизайн, наука о данных и поведение на интервью на Pramp - ведущей в мире платформе для интервью. А что самое приятное, Pramp на 100% бесплатный ресурс)

#статьядня

http://clc.am/VPvseQ
Виртуальные среды ("virtualenvs") сохраняют зависимости в вашем проекте! Они помогают вам избежать конфликтов между пакетами и разными версиями Python.

Перед созданием и активацией virtualenv: python и pip отображаются в системе версия интерпретатора Python (например, Python 2.7)

#codeexample

$ which python /usr/local/bin/python
$ python3 -m venv ./venv
$ ls ./venv bin include lib pyvenv.cfg #
$ source ./venv/bin/activate

(venv) $ echo "wee!"
(venv) $ which python /Users/dan/my-project/venv/bin/python3
(venv) $ pip install requests
(venv) $ deactivate
$ echo "yay!"
$ which python /usr/local/bin/python
Python 3 допускает имена переменных в юникоде:

#codeexample

π = math.pi
class Spin̈alTap: pass
Spin̈alTap()
<Spin̈alTap object at 0x10e58d908>

Однако работает это только с буквами:

🍺 = "beer"
SyntaxError:
"invalid character in identifier"
Пишем эскиз веб-фреймворка на Python на низком уровне

- работа с сокетами,
- маршрутизация (роутинг) запроса от клиента (браузера) на сервере,
- генерация ответа сервера (заголовки и тело).

Составляем представление о том, как Django и Flask обрабатывают запросы и осуществляют роутинг "под капотом".

#видеодня

http://clc.am/z6xK5g
Учебник Full Speed Python
В опубликованном на GitHub пособии João Ventura основной акцент делается на обучении на реальных практических задачах. Автор заявляет, что студенты его курса могут реализовать распределенное клиент-серверное приложение с сокетами уже на третьей неделе. Более 2000 звезд на GitHub указывают на то, что это не голословное утверждение.

#книгадня

http://clc.am/z3fKRg
​​Обработка изображений на Python
Курс начального уровня учит обработке изображений с помощью языка программирования Python. В курсе рассматриваются: устройство цифровых изображений, коррекция яркости и цвета изображения, фильтрация изображений, частотный анализ и устройство формата JPEG

#youtubeдня

http://clc.am/v-HXgg
Шесть вещей о беcсерверной обработке данных
В статье о бессерверной обработке данных приводятся шесть уроков, извлеченных компанией, сделавшей уже четыре различных проекта при помощи serverless-технологии.

#статьядня

http://clc.am/eP9g1A
Пишем скрипт для поиска книг на изображениях с помощью Python и OpenCV
Из данной статьи вы узнаете, как создать Python-скрипт с помощью OpenCV для подсчёта количества книг на изображении.

#статьядня

http://clc.am/qqWOpA
​​The New And Improved Flask Mega-Tutorial
Автор: Miguel Grinberg

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

#книгадня

Скачать книгу:
https://t.me/progbook/2253
​​Знаете разницу между аналитиком, использующим лишь Excel, и специалистом, "вооруженным" Python для анализа данных? Представьте разницу между велосипедом и сверхзвуковым самолётом.
Компании выбирают спецов, умеющих работать с Big Data при помощи современных инструментов для анализа.

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

Всему этому вы научитесь на курсе "Python для анализа данных".
Здесь вам не дадут “серебряную пулю”, но вы точно получите структурированные знания и, главное, уверенные навыки анализа различных данных с помощью Python, личную менторскую поддержку.
Запросите программу и план обучения → https://goo.gl/fXabkd
#codeexample

Функция functools.reduce является мощным инструментом, но она не может возвращать промежуточные результаты и поэтому не может использоваться с бесконечными генераторами.
Начиная с Python 3.3 вы можете использовать itertools.accumulate для выполнения следующих задач:

a = accumulate(sys.stdin, lambda a, b: int(a) * int(b))
next(a)
1 # this line is input

'1\n'
next(a)
2 # this line is input

next(a)
10 # this line is input
20
Разаработка на Python в Visual Studio Code
В этой статье вы узнаете о том, как:
- установить Visual Studio Code;
- найти и установить расширения, облегчающие разработку на Python;
- написать простое приложение на Python;
- узнаете, как запускать и отлаживать существующие программы Python в VS Code;
- подключать Visual Studio Code к Git и GitHub, чтобы поделиться своим кодом со всем миром.

#статьядня

http://clc.am/qkQNsg
Существуют десятки подкастов по науке о данных, охватывающих все - от машинного обучения и искусственного интеллекта до анализа больших данных. Это будет отличным ресурсом для тех, кто пытается найти полезные, информативные и интересные шоу.

#статьядня

http://clc.am/f4maPg
Если вы хотите выполнить несколько итераций одновременно, функция zip может быть хорошим выбором.

#codeexample

Она возвращает генератор, который выдает кортежи, содержащие один элемент из каждой исходной итерации:

In : eng = ['one', 'two', 'three']
In : ger = ['eins', 'zwei', 'drei']
In : for e, g in zip(eng, ger):
    ...:     print('{e} = {g}'.format(e=e, g=g))
    ...:
one = eins
two = zwei
three = drei

Обратите внимание, что zip принимает итераторы как отдельные аргументы, а не как список аргументов. Чтобы распаковать значения, вы можете использовать оператор *:

In : list(zip(*zip(eng, ger)))
Out: [('one', 'two', 'three'), ('eins', 'zwei', 'drei')]
​​Pythran: как заставить работать код Python со скоростью С++
Хотите писать программы на Python, работающие со скоростью кода, написанного на С++? Достаточно добавить аннотацию Pythran!

#статьядня

 https://prglb.ru/bhz7
Шаблон проектирования Фабрика и его реализация в Python
Шаблоны проектирования  стали популярной темой в конце 90-х годов после так называемой «Банды четырех»
Рассмотрим поподробнее шаблон проектирования Фабрика и его реализация в Python.

#статьядня

https://prglb.ru/4g2ss
Введение в Git и GitHub для разработчиков на Python
Самая известная система контроля версий в наши дни - Git, которая часто используется вместе с GitHub. Из этого туториала по вы узнаете все, что вам нужно знать об основах использования Git.

#полезностьдня

https://prglb.ru/2wxyk
Scrapy: создаём краулер парсер на Python с нуля
Краулинг - процедура анализа веб-страниц, сбор информации и последующий вывод в структурированной форме.
Сейчас набирает популярность Scrapy Framework, который написан на языке Python. Этот простой фреймворк предоставит вам мощный инструмент, с которым вы быстро сможете краулить множество ресурсов.

#видеодня

https://prglb.ru/2xwjo
#codeexample

Циклы for и while в Python поддерживают предложение else, которое выполняется только в том случае, если цикл завершается без выполнения оператора break

def contains(haystack, needle):

"""
"Бросайте" ValueError если needle
не находится в haystack.
"""
for item in haystack:
if item == needle:
break
else:

# Else - это "предложение завершения",
# которое выполняется только в том случае, если
# цикл завершился без оператора break
raise ValueError('Needle not found')

contains([23, 'needle', 0xbadc0ffee], 'needle')
None

contains([23, 42, 0xbadc0ffee], 'needle')
ValueError: "Needle not found"


# Если вы не фанат else "условия завершения" в циклах,
# то можете сделать что-то вроде этого:
def better_contains(haystack, needle):
for item in haystack:
if item == needle:
return
raise ValueError('Needle not found')


# Небольшое примечание:
if needle not in haystack:
raise ValueError('Needle not found')