Size: a a a

2019 November 16
Kangaroo
Как использовать функцию map()

https://morioh.com/p/20a108af493c?f=5c21fb01c16e2556b555ab32
источник
Kangaroo
Поговорим о терминах в асинхронном программировании на python.

КорутинаКорутина — это асинхронная (async) функция. Корутина может быть и объектом, возвращённым из корутины-функции.

Если при объявлении функции указано то, что она является асинхронной, то вызывать её можно с использованием ключевого слова await:

await say_after(1, ‘hello’)


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

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

Задачи позволяют запускать корутины в цикле событий. Это упрощает управление выполнением нескольких корутин. Вот пример, в котором используются корутины и задачи. Обратите внимание на то, что сущности, объявленные с помощью конструкции async def — это корутины.


import asyncio import time async

def say_after(delay, what):
    await asyncio.sleep(delay)     print(what)

async def main():     task1 = asyncio.create_task(say_after(1, 'hello'))
    task2 = asyncio.create_task(say_after(2, 'world'))     

   print(f"started at {time.strftime('%X')}")     # Ждём завершения обеих задач (это должно занять     # около 2 секунд.)
   await task1     await task2     print(f"finished at {time.strftime('%X')}")

asyncio.run(main())
источник
2019 November 17
Kangaroo
Что такое Бит и Байт?

Давайте разберемся, что же такое бит и байт. Бит, наименьшая единица, которая измеряет количество информации. Один содержит мало информации в отличие от группы битов. Для хранени информации используют всего два знака – цифры 0 и 1. Совокупность этих двух цифр называется двоичный код, а сами цифры принято называть двоичными цифрами или коротко битами. Компьютер различает 0 и 1 благодаря электрическим импульсам в электронных цепях. Если в цепи нет импульса – это цифра 0, если импульс есть, то это 1. Таким образом, в виде комбинации 0 и 1, внутри компьютера хранится абсолютно вся информация от фотографий до музыки. Наравне с понятием бита используется понятие байт.

Совокупность компьютерных данных из 8 бит называется байтом. 8 битов дают основу для представления символов, например буквы «А» и двоичной арифметики. То есть байт является командой битов, отвечающих за определенную деталь в файле. Каждый байт имеет в памяти компьютера уникальный адрес. По соглашению биты, и байты имеют нумерацию от 0 до 7 справа налево. Например: номер бита – 76543210, а значение его - 0 1 0 0 0 0 0 1 и в итоге, если передать это значение на принтер, там будет сгенерирована буква «А». Количество включенных битов в байте должно быть нечетно. Когда команда обращена к байту, компьютер проверяет этот байт и если число включенных битов четное, система выдает ошибку. Ошибка четности может быть результатом сбоя оборудования или случайным явлением, но это происходит очень редко.

Во время обработки данных, в компьютере по электронным цепям проходят электрические импульсы. Цепи состоят из проводников и электронных микро устройств, которые называются логическими вентилями. Импульсы, проходящие через эти вентили, могут «гаситься». Таким образом, обрабатываются данные. Объединяя логические вентили, создаются сложные комбинации, выполняющие операции – запоминают, сравнивают, складывают, сравнивают числа и прочее.

В кремниевых пластинках расположены электронные цепи. Каждая микросхема может содержать более миллиона цепей, от расположения зависит вид работы, которую они выполняют.
Микросхемы расположены на специальных пластинках, а именно на печатных платах. На самой плате напечатаны полоски, через которые проходит электричество к микросхемам. Металлические дорожки, которые называются шинами, передают байты, каждая шина содержит несколько таких дорожек. Одна дорожка передает один байт.

Шины делятся на три типа: шина данных, управления и адресная шина. Шина данных обменивается данными между процессором и устройствами ввода, между процессором и памятью компьютера. Инструкции от процессора ко всем узлам компьютера передаются по шине управления. С помощью адресной шины передается информация о местоположении или адресе данных.

Бит и байт это довольно маленькие величины, поэтому их используют с приставками кило, мега и гига. Давайте теперь поговорим о величине, которая измеряет скорость интернета. Скорость интернета, это количество отправляемой и получаемой информации вашим персональным компьютером в единицу времени. Качество единицы времени - секунда, а качество количества получаемой информации – килобит или мегабит. Например, если ваша скорость показывает 128 Kbps, значит, что ваше соединение пропускает 128 килобит что приравнивается к 16 килобайтам. Для того что бы узнать много это или мало воспользуйтесь тестами для определения скорости соединения с Интернетом.
источник
Kangaroo
Django tutorial: part 1 - Подготовка (Зависимости и Виртуальное окружение)

https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/django-tutorial-part-1-podgotovka-zavisimosti-i-virtualnoe-okrujenie-5dd17200420eca6800c3e282
источник
2019 November 18
Kangaroo
Введение в множества

Set' ы в Python реализованы так, что максимально напоминают математические множества. Давайте пройдемся по основным свойствам и возможностям множеств в Python, и разберемся, как их использовать.

В математике множество -- это набор объектов произвольной природы. В Python множество тоже может содержать переменные разных типов, например:
 
>>> A = {"My hovercraft is full of eels", 42, (3.14, 2.72)}

Но есть одно ограничение: элементы множества должны быть хэшируемыми: например, в множество можно добавить строки, числа и кортежи, но нельзя словари и списки:
 
>>> A.add([-1, 0])
TypeError: unhashable type: 'list'

При этом поскольку сами множества мутабельны, то множество множеств, как в известном парадоксе про брадобрея, сделать не получится. Но если очень хочется, можно использовать frozenset’ы: эти объекты в остальном ведут себя почти так же, но они иммутабельны и их можно добавить в множество.

Инициализировать множество можно используя фигурные скобки или через конструктор класса set(). Эти инициализации эквивалентны:
 
>>> B = {1, 2, 3}
>>> B = set((1, 2, 3))

Только не запутайтесь: такая инструкция  
 
C = {}

создаст не множество, а словарь.

В версиях интерпретатора 2.7 и выше работают set comprehensions:
 
>>> C = {x for x in range(1, 5)}
>>> C
{1, 2, 3, 4}

Элементы множества, как и в математике, должны быть уникальными. На практике этим пользуются для того, чтобы исключить повторяющиеся элементы:
 
>>> D = [1, 2, 3, 3]
>>> D = list(set(D))
>>> D
[1, 2, 3]

Кстати, множества не сохраняют порядок, поэтому если он нужен, то добро пожаловать в списки. Из-за того, что порядка нет, во множествах нет ни индексирования, ни слайсов. В то же время циклы по множеству можно делать обычным pythonic-способом:
 
>>> for elem in C:
...     print(elem)

Над множествами в Python можно делать те же операции, что и в математике: находить объединение, пересечение, проверять принадлежность к множеству и так далее. Для этого можно пользоваться операторами, а можно методами множеств:
 
A | B   A.union(B)
A & B   A.intersection(B)
A - B   A.difference(B)
A <= B  A.issubset(B)
A => B  A.issuperset(B)


Обратите внимание, что операторы принимают только set’ы, а методы -- любые iterable контейнеры. Есть мнение, что операторы менее читаемые, но оба подхода в целом равноправны.

И еще у класса set есть методы, которые удобны для работы со множествами как с коллекциями:

add() — добавить элемент,
remove() — удалить элемент,
pop() — извлечь с удалением,
update() — объединить с другим множеством,
clear() — очистить множество.

И напоследок: один раз я больно отстрелила себе ногу, когда хотела добавить составной элемент в множество с помощью неправильного инструмента. Например, если у нас есть множество строк и мы пытаемся добавить в него еще один элемент вот так:
 
>>> F = {"Seregia", "Vasia"}
>>> F.update("Alisa")

то получаем ожидаемый результат:
 
>>> F
{'l', 'a', 'Seregia', 'Vasia', 'A', 'i', 's'}

Это абсолютно валидный код и он отработает, поэтому такую ошибку по невнимательности можно искать довольно долго.  Так что не попадайте в ловушку методов add() и update().

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

Как определиться в выборе коллекции?
🐙 Если важен порядок — используйте списки.
🐙 Если нужно отображение ключ-значение — используйте словари.
🐙 Если нужен набор уникальных элементов — используйте множества.

#основы #типы_данных #comprehensions #списки #селяви #коллекции
Telegram
Python in Depth
Чем мутабельные объекты отличаются от иммутабельных?

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

Рассмотрим на примере. В Python есть встроенная функция id(). В реализации CPython она возвращает адрес, по которому объект находится в памяти. Создадим список и посмотрим, в ячейке с каким номером он окажется.

>>>beatles = [“Ringo”, “Paul”, “John”, “George”]
>>>id(beatles)
140181376779336

Видим, что список лежит по адресу 140181376779336. Теперь изменим какой-нибудь элемент списка и посмотрим, изменился ли адрес.

>>>beatles[0] = “Pete”
>>>beatles
[“Pete”, “Paul”, “John”, “George”]
>>>id(beatles)
140181376779336

Видим, что адрес списка не меняется, если мы изменяем элементы, которые в него входят. Теперь создадим в памяти строку

>>>bass = "Paul"
>>>id(bass)
140068833595776

и добавим в нее что-нибудь

>>>bass += " McCartney"
>>>bass
Paul McCartney
>>>id(bass)
140068833600432

Видим, что…
источник
2019 November 19
Kangaroo
источник
Kangaroo
Управление зависимостями Python и упаковка стали проще!
poetry помогает объявлять, управлять и устанавливать зависимости проектов Python, гарантируя правильный стек везде.

https://github.com/sdispater/poetry
источник
2019 November 20
Kangaroo
Как создавать и распаковывать Zip-архивы в Python

https://morioh.com/p/7f0a7fbc1de3
источник
Kangaroo
"Метаклассы – это магия, о которой 99% пользователей не стоит даже задумываться. Если вам интересно, нужны ли они вам – тогда точно нет. Люди, которым они на самом деле нужны, знают, зачем, и что с ними делать."

~ Гуру Python Tim Peters
источник
2019 November 21
Kangaroo
источник
Kangaroo
В ежегодном исследовании State of the Octoverse 2019 от GithHub Python обогнал Java и вышел на второе место по популярности среди языков программирования.

https://github.blog/2019-11-06-the-state-of-the-octoverse-2019/
источник
2019 November 22
Kangaroo
Написал вторую часть(сколько таких частей ожидается сказать трудно) мини курса по Django , пока что самые азы, для тех кто с django еще не работал, постепенно буду раскрывать весь потенциал фреймворка, от легкого к сложному

https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/django-tutorial-part-2-nachalo-sozdanie-proekta-i-prilojeniia-5dd807f3710eb34d51c32e60
источник
2019 November 23
Kangaroo
Нашел вот такую годноту , и как правило делюсь с комъюнити

https://m.habr.com/ru/post/476912/
источник
2019 November 25
Kangaroo
Python считается одним из самых популярных языков для создания веб-сервисов. За его плечами как скорые, небрежные RESTful API, так и полноценные веб-приложения, обслуживающие миллионы пользователей. Работающие в данной сфере наверняка уже использовали некоторые популярные фреймворки для создания сайта — Django, Flask, Falcon, Tornado или CherryPy.

За последние пару лет появилось довольно много неплохих фреймворков, и создается впечатление, что ветеранам скоро придется подвинуться. Новые веб-фреймворки используют свежий подход к решению проблем, делая акцент на производительности и выразительности API. Рассмотрим 11 новых веб-фреймворков Python, на которые вам стоит обратить внимание.

Sanic позиционирует себя как веб-сервер и веб-фреймворк, созданный для быстрого запуска. Он позволяет использовать синтаксис async/await, добавленный в Python 3.5. По этой причине код не блокируется и отличается скоростью выполнения. Sanic использует uvloop и ujson, когда нужно помочь с производительностью, однако данные пакеты
источник
Kangaroo
Python считается одним из самых популярных языков для создания веб-сервисов. За его плечами как скорые, небрежные RESTful API, так и полноценные веб-приложения, обслуживающие миллионы пользователей. Работающие в данной сфере наверняка уже использовали некоторые популярные фреймворки для создания сайта — Django, Flask, Falcon, Tornado или CherryPy.

За последние пару лет появилось довольно много неплохих фреймворков, и создается впечатление, что ветеранам скоро придется подвинуться. Новые веб-фреймворки используют свежий подход к решению проблем, делая акцент на производительности и выразительности API. Рассмотрим 11 новых веб-фреймворков Python, на которые вам стоит обратить внимание.

Sanic позиционирует себя как веб-сервер и веб-фреймворк, созданный для быстрого запуска. Он позволяет использовать синтаксис async/await, добавленный в Python 3.5. По этой причине код не блокируется и отличается скоростью выполнения. Sanic использует uvloop и ujson, когда нужно помочь с производительностью, однако данные пакеты являются опциональными.

Starlette является легким фреймворком ASGI, что идеален для создания высокопроизводительных сервисов asyncio. Он может использоваться как самостоятельный фреймворк, так и как инструментарий ASGI. Поставляется вкупе с обширным ассортиментом инструментов, поддерживает WebSockets, GraphQL, внутрипроцессовые фоновые задачи, а также текстовый клиент, построенный на Requests Python.

Masonite является веб-фреймворком Python, сконцетрированном на разработке. Он стремится соответствовать подходу «все включено». Это отличный инструментарий программиста с огромным количеством функционала и чрезвычайно растяжимой архитектурой.

FastAPI является современным, высокопроизводительным веб-фреймворком для создания API на Python 3.6+ основанный на подсказки типов Python. Создан поверх Starlette и является одним из самых быстрых и доступных фреймворков Python.

FastAPI базируется, а также является совместимым, с открытыми стандартами для API — OpenAPI (ранее известный как Swagger) и JSON Schema.

Responder также основан на Starlette. При создании Responder главной идеей было совместить лучшие аспекты Flask и Falcon внутри одного-единcтвенного фреймворка.

У него есть встроенный статический сервер для продакшена, автоматические gzip-ответы, нативная поддержка GraphQL и встроенный клиент для тестов, использующий модуль Requests.

Molten является минималистичным, расширяемым, быстрым и производительным фреймворком для создания HTTP API на Python. Molten автоматически проверяет запросы на соответствие с предопределенными схемами, гарантируя, что обработчики будут запускаться только при наличии правильного ввода.

Japronto является быстрым, масштабируемым, асинхронным HTTP инструментарием для Python 3.5+, интегрированным с конвейерным HTTP-сервером, базирующимся на uvloop и picohttpparser.

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

Klein — это микро-фреймворк для разработки веб-сервисов на Python. Klein отличается минималистичным API, что похож на Bottle и Flask. Стоит отметить, что он зависим от дополнительных инструментов вне стандартной библиотеки.

Причина в том, что Klein создан на широко используемых и хорошо протестированных компонентах, таких как Werkzeug и Twisted.

Quart является Python ASGI веб-микрофреймворком. Он предназначен для того чтобы предоставить самый простой способ использования асинхронных функций в веб-контексте, особенно с уже существующими приложениями Flask.

Это становится возможным, благодаря тому, что Quart API является супер-набором для API Flask. Quart позиционирует себя в качестве полноценного веб-микрофреймворком. Он поддерживает HTTP/1.1, HTTP/2 и вебсокеты.

BlackShepp является асинхронным веб-фреймворком для создания веб-приложений Python, которые не блокируются и в основе которых лежат события. Вдохновлен Flask и ASP.NET Core.
источник
Kangaroo
BlackSheep поддерживает автоматическую связку значений с обработчиками запросов, задействуя аннотации типа или конвенции. Он также поддерживает внедрение зависимостей и имплементацию стратегий для обработки аутентификации и авторизации, используя внешние библиотеки.

Cyclone является веб-фреймворком, который реализует Tornado API в виде протокола Twisted. Идея в соединении элегантного и ясного Tornado API с циклами событий Twisted, что позволяет использовать огромное количество поддерживаемых протоколов.

Эта комбинация обеспечивает основу для создания гибридных серверов, способных очень эффективно обрабатывать HTTP, а также одновременно использовать электронную почту, ssh, sip, irc, причем одновременно.
источник
2019 November 26
Kangaroo
Топ 5 библиотек python разработчика

5. Beautiful Soup
Beautiful Soup - это парсер для синтаксического разбора файлов HTML/XML, написанный на языке программирования Python, который может преобразовать даже неправильную разметку в дерево синтаксического разбора. Он поддерживает простые и естественные способы навигации, поиска и модификации дерева синтаксического разбора. В большинстве случаев он поможет программисту сэкономить часы и дни работы

4. Pillow
Python Imaging Library — библиотека языка Python, предназначенная для работы с растровой графикой. Разработка библиотеки прекращена. Однако проект под названием Pillow, являющийся форком PIL, развивается и включает, в том числе, поддержку Python 3.x

3. SQL Alchemy
SQLAlchemy — это программная библиотека на языке Python для работы с реляционными СУБД с применением технологии ORM. Служит для синхронизации объектов Python и записей реляционной базы данных. SQLAlchemy позволяет описывать структуры баз данных и способы взаимодействия с ними на языке Python без использования SQL.

2. Simplejson
Simplejson - это быстрый, точный и расширяемый json кодировщик и декодировщик, который поддерживает Python 3.3+ с обратной совместимостью с Python 2.5.
Simplejson написан на Python и не имеет внешних зависимостей. Он также включает расширения, написанные на С для представлений с особо высоким быстродействием. Помимо дефолтной UTF-8, декодер Simplejson может оперировать строками JSON, поступающими в любой кодировке.

1. Requests
Requests - это библиотека Python HTTP, выпущенная под лицензией Apache2. Цель проекта - сделать запросы HTTP проще и удобнее для человека
источник
2019 November 27
Kangaroo
источник
Kangaroo
import bugfeature as 🤖

Как вам такой способ импорта в питоне с использованием эмодзи? Некоторым разработчикам понравилась эта идея и они создали библиотеку pythonji.

При помощи её, можно писать код с использованием смайликов. Например в качестве счетчика лайков указать ❤, а для дизлайков воспользоваться 💩.

Забавно, что расширение у файлов библиотеки - 🐍. Исходники доступны на GitHub (https://github.com/gahjelle/pythonji), а установить её можно командой:

python -m pip install pythonji
источник
2019 November 29
Kangaroo
Поддержку Python 2.7 прекращают с 2020 года

https://habr.com/ru/company/1cloud/blog/477944/
источник