Изначально Интернет был задуман как всеобщая нейтральная сеть, в которой каждый может внести равный вклад и служить на благо обществу. Но сейчас большая часть интернет-ресурсов сосредоточена в руках корпораций. Они контролируют доступ к нашим важнейшим и конфиденциальным данным. Компании могут предоставлять услуги прекрасного качества, но все же это не совсем то, что предполагалось создать.
Децентрализованная система хранения информации обладает значительными преимуществами с точки зрения безопасности и эффективности, и в настоящее время она становится реальностью. Все больше и больше блокчейн-стартапов начинают реализовывать огромный потенциал технологии распределенного реестра и надстраивают новые компоненты на децентрализованной экосистеме.
@dcntr создан для того чтобы быть в курсе о проектах децентрализованных сетей.
t.me/dcntr
Децентрализованная система хранения информации обладает значительными преимуществами с точки зрения безопасности и эффективности, и в настоящее время она становится реальностью. Все больше и больше блокчейн-стартапов начинают реализовывать огромный потенциал технологии распределенного реестра и надстраивают новые компоненты на децентрализованной экосистеме.
@dcntr создан для того чтобы быть в курсе о проектах децентрализованных сетей.
t.me/dcntr
Telegram
Decentralize!
Децентрализованные и распределенные сети. Fediverse. Безопасные средства коммуникации. Селфхост. Шифрование.
Треугольник Паскаля
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/treugolnik-paskalia-5dc599d2012fbd619766ff58
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/treugolnik-paskalia-5dc599d2012fbd619766ff58
Яндекс Дзен
Треугольник Паскаля
Треугольником Паскаля называется бесконечная треугольная таблица, в которой на вершине и по боковым сторонам стоят единицы, каждое из остальных чисел равно сумме двух чисел, стоящих над ним в предшествующей строке.
Давайте разберёмся с тем как бы нам поменять значения в двух переменных не вводя так сказать временную переменную.
Первый способ.
Магия Python
a = 2
b = 3
a, b = b, a
Это конечно хороший способ но если кто не знает, то Python при этом создает новую переменную у себя внутри, по этому пойдем дальше.
Второй способ.
Математический.
a = 2
b = 3
a = a + b
b = a - b
a = a - b
Но и этот способ имеет свои недостатки. Это большое количество операций. Второй это область применения, только числа.
Еще 1 похожий на математический способ.
Использование xor.
a = 4
b = 5
a = a ^ b
b = a ^ b
a = a ^ b
Он так же как и математический способ имеет проблемы. Подходить для любых целочисленных значений.
Если кто знает еще способы обмена двух переменных то пишите сюда @ywjcpw , опбликуем )
Первый способ.
Магия Python
a = 2
b = 3
a, b = b, a
Это конечно хороший способ но если кто не знает, то Python при этом создает новую переменную у себя внутри, по этому пойдем дальше.
Второй способ.
Математический.
a = 2
b = 3
a = a + b
b = a - b
a = a - b
Но и этот способ имеет свои недостатки. Это большое количество операций. Второй это область применения, только числа.
Еще 1 похожий на математический способ.
Использование xor.
a = 4
b = 5
a = a ^ b
b = a ^ b
a = a ^ b
Он так же как и математический способ имеет проблемы. Подходить для любых целочисленных значений.
Если кто знает еще способы обмена двух переменных то пишите сюда @ywjcpw , опбликуем )
🔥1
Разберемся с нашим опросом который мы опубликовали вчера вечером. В нем мы просили вас проголосовать за то сколько байт в int(1) в Python. Давайте теперь мы расскажем вам как там обстоят дела в Python с памятью на самом деле.
Приведем вам пример из кода:
Выполним наш код в консоли на 64 битной машине: получим 24 бит.
Если выполнить данный код на 32 битной машине: 12 бит.
Столько же занимает и просто int().
obj.sizeof - возвращвет размеробъекта в битах.
Теперь вы знаете сколько байт занимает int(1) в Python.
Но давайте пойдем дальше и проверим сколько занимают другие типы данных в Python.
Возьмем самые часто используемые типы данных: int, float, tuple, str, list, dict. (размер будет указан в битах)
Int:
на 32 битной машине: 12.
на 64 битной машине: 24.
float:
на 32 битной машине: 16.
на 64 битной машине: 24.
str:
на 32 битной машине: 21+длина.
на 64 битной машине: 37+длина .
list:
на 32 битной машине: 20+4*длина.
на 64 битной машине: 40+8*длина.
tuple:
на 32 битной машине: 12+4*длина.
на 64 битной машине: 24+8*длина.
С dict дела обстоят интереснее:
на 32 битной машине:
длина <= 5, 124 бит.
длина >5, 124+12*длину.
на 64 битной машине:
длина <= 5, 248 бит.
длина >5, 248+24*длину.
Ну что же теперь мы знаем сколько бит выделяет Python для разных типов данных.
Ну а как сам Python работает с памятью, как работает “сборщик мусора” мы расскажем в другом посте.
Следите за обновлениями)
Приведем вам пример из кода:
a = int(1)
print(a.sizeof())
Выполним наш код в консоли на 64 битной машине: получим 24 бит.
Если выполнить данный код на 32 битной машине: 12 бит.
Столько же занимает и просто int().
obj.sizeof - возвращвет размеробъекта в битах.
Теперь вы знаете сколько байт занимает int(1) в Python.
Но давайте пойдем дальше и проверим сколько занимают другие типы данных в Python.
Возьмем самые часто используемые типы данных: int, float, tuple, str, list, dict. (размер будет указан в битах)
Int:
на 32 битной машине: 12.
на 64 битной машине: 24.
float:
на 32 битной машине: 16.
на 64 битной машине: 24.
str:
на 32 битной машине: 21+длина.
на 64 битной машине: 37+длина .
list:
на 32 битной машине: 20+4*длина.
на 64 битной машине: 40+8*длина.
tuple:
на 32 битной машине: 12+4*длина.
на 64 битной машине: 24+8*длина.
С dict дела обстоят интереснее:
на 32 битной машине:
длина <= 5, 124 бит.
длина >5, 124+12*длину.
на 64 битной машине:
длина <= 5, 248 бит.
длина >5, 248+24*длину.
Ну что же теперь мы знаем сколько бит выделяет Python для разных типов данных.
Ну а как сам Python работает с памятью, как работает “сборщик мусора” мы расскажем в другом посте.
Следите за обновлениями)
Блез Паскаль
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/blez-paskal-5dc6e7cc089979742c129874
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/blez-paskal-5dc6e7cc089979742c129874
Яндекс Дзен
Блез Паскаль
Ученый, год рождения которого датируется 19 июня 1623 года, появился на свет в коммуне на юге центральной части Франции, в городе Клермон-Ферран. Будущий математик рос и воспитывался в многодетной семье (у Паскалей было трое детей), принадлежавшей к чиновничьей…
Что такое веб-фреймворк на языке python?
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/chto-takoe-vebfreimvork-na-iazyke-python-5d3dc8e2ac412400adbc9d5d
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/chto-takoe-vebfreimvork-na-iazyke-python-5d3dc8e2ac412400adbc9d5d
Яндекс Дзен
Что такое веб-фреймворк на языке python?
Для ответа на вопрос: Что такое веб-фреймворк на языке python, имеет смысл рассмотреть структуру веб-приложения, написанного на языке Python без применения фреймворка.
Поговорим о терминах в асинхронном программировании на python.
Корутина — это асинхронная (async) функция. Корутина может быть и объектом, возвращённым из корутины-функции.
Если при объявлении функции указано то, что она является асинхронной, то вызывать её можно с использованием ключевого слова await:
Такая конструкция означает, что программа будет выполняться до тех пор, пока не встретит await-выражение, после чего вызовет функцию и приостановит своё выполнение до тех пор, пока работа вызванной функции не завершится. После этого возможность запуститься появится и у других корутин.
Приостановка выполнения программы означает, что управление возвращается циклу событий. Когда используют модуль asyncio, цикл событий выполняет все асинхронные задачи, производит операции ввода-вывода и выполняет подпроцессы. В большинстве случаев для запуска корутин используются задачи.
Задачи позволяют запускать корутины в цикле событий. Это упрощает управление выполнением нескольких корутин. Вот пример, в котором используются корутины и задачи. Обратите внимание на то, что сущности, объявленные с помощью конструкции async def — это корутины.
Корутина — это асинхронная (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())Что такое Бит и Байт?
Давайте разберемся, что же такое бит и байт. Бит, наименьшая единица, которая измеряет количество информации. Один содержит мало информации в отличие от группы битов. Для хранени информации используют всего два знака – цифры 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 килобайтам. Для того что бы узнать много это или мало воспользуйтесь тестами для определения скорости соединения с Интернетом.
Давайте разберемся, что же такое бит и байт. Бит, наименьшая единица, которая измеряет количество информации. Один содержит мало информации в отличие от группы битов. Для хранени информации используют всего два знака – цифры 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 килобайтам. Для того что бы узнать много это или мало воспользуйтесь тестами для определения скорости соединения с Интернетом.
Django tutorial: part 1 - Подготовка (Зависимости и Виртуальное окружение)
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/django-tutorial-part-1-podgotovka-zavisimosti-i-virtualnoe-okrujenie-5dd17200420eca6800c3e282
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/django-tutorial-part-1-podgotovka-zavisimosti-i-virtualnoe-okrujenie-5dd17200420eca6800c3e282
Яндекс Дзен
Django tutorial: part 1 - Подготовка (Зависимости и Виртуальное окружение)
Что такое Django framework?
Forwarded from CoolPython
Введение в множества
Set' ы в Python реализованы так, что максимально напоминают математические множества. Давайте пройдемся по основным свойствам и возможностям множеств в Python, и разберемся, как их использовать.
В математике множество -- это набор объектов произвольной природы. В Python множество тоже может содержать переменные разных типов, например:
Инициализировать множество можно используя фигурные скобки или через конструктор класса
В версиях интерпретатора 2.7 и выше работают set comprehensions:
Над множествами в Python можно делать те же операции, что и в математике: находить объединение, пересечение, проверять принадлежность к множеству и так далее. Для этого можно пользоваться операторами, а можно методами множеств:
И еще у класса
И напоследок: один раз я больно отстрелила себе ногу, когда хотела добавить составной элемент в множество с помощью неправильного инструмента. Например, если у нас есть множество строк и мы пытаемся добавить в него еще один элемент вот так:
В общем, Python set'ы сильно напоминают математические множества: могут содержать объекты разных типов, требуют уникальности элементов, не сохраняют порядок и имеют методы, позволяющие их объединять, пересекать, etc... Кроме того, множества имеют интерфейс для работы с ними как с коллекциями.
Как определиться в выборе коллекции?
🐙 Если важен порядок — используйте списки.
🐙 Если нужно отображение ключ-значение — используйте словари.
🐙 Если нужен набор уникальных элементов — используйте множества.
#основы #типы_данных #comprehensions #списки #селяви #коллекции
Set' ы в Python реализованы так, что максимально напоминают математические множества. Давайте пройдемся по основным свойствам и возможностям множеств в Python, и разберемся, как их использовать.
В математике множество -- это набор объектов произвольной природы. В Python множество тоже может содержать переменные разных типов, например:
Но есть одно ограничение: элементы множества должны быть хэшируемыми: например, в множество можно добавить строки, числа и кортежи, но нельзя словари и списки:
>>> A = {"My hovercraft is full of eels", 42, (3.14, 2.72)}
При этом поскольку сами множества мутабельны, то множество множеств, как в известном парадоксе про брадобрея, сделать не получится. Но если очень хочется, можно использовать frozenset’ы: эти объекты в остальном ведут себя почти так же, но они иммутабельны и их можно добавить в множество.
>>> A.add([-1, 0])
TypeError: unhashable type: 'list'
Инициализировать множество можно используя фигурные скобки или через конструктор класса
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}
Кстати, множества не сохраняют порядок, поэтому если он нужен, то добро пожаловать в списки. Из-за того, что порядка нет, во множествах нет ни индексирования, ни слайсов. В то же время циклы по множеству можно делать обычным pythonic-способом:
>>> D = [1, 2, 3, 3]
>>> D = list(set(D))
>>> D
[1, 2, 3]
>>> for elem in C:
... print(elem)
Над множествами в Python можно делать те же операции, что и в математике: находить объединение, пересечение, проверять принадлежность к множеству и так далее. Для этого можно пользоваться операторами, а можно методами множеств:
Обратите внимание, что операторы принимают только set’ы, а методы -- любые iterable контейнеры. Есть мнение, что операторы менее читаемые, но оба подхода в целом равноправны.
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 есть методы, которые удобны для работы со множествами как с коллекциями: 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 #списки #селяви #коллекции
Управление зависимостями Python и упаковка стали проще!
poetry помогает объявлять, управлять и устанавливать зависимости проектов Python, гарантируя правильный стек везде.
https://github.com/sdispater/poetry
poetry помогает объявлять, управлять и устанавливать зависимости проектов Python, гарантируя правильный стек везде.
https://github.com/sdispater/poetry
GitHub
GitHub - python-poetry/poetry: Python packaging and dependency management made easy
Python packaging and dependency management made easy - GitHub - python-poetry/poetry: Python packaging and dependency management made easy