Треугольник Паскаля
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
"Метаклассы – это магия, о которой 99% пользователей не стоит даже задумываться. Если вам интересно, нужны ли они вам – тогда точно нет. Люди, которым они на самом деле нужны, знают, зачем, и что с ними делать."
~ Гуру Python Tim Peters
~ Гуру Python Tim Peters
Получение и установка cookies в Django
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/poluchenie-i-ustanovka-cookies-v-django-5d178814cd798600ae29e311
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/poluchenie-i-ustanovka-cookies-v-django-5d178814cd798600ae29e311
Яндекс Дзен
Получение и установка cookies в Django
Прочитать cookies совсем просто. В каждом объекте HttpRequest имеется объект COOKIES, который выглядит как словарь.
В ежегодном исследовании State of the Octoverse 2019 от GithHub Python обогнал Java и вышел на второе место по популярности среди языков программирования.
https://github.blog/2019-11-06-the-state-of-the-octoverse-2019/
https://github.blog/2019-11-06-the-state-of-the-octoverse-2019/
The GitHub Blog
The State of the Octoverse 2019
To celebrate 365 days of achievements, let’s look back at the code and communities built on GitHub this year.
Написал вторую часть(сколько таких частей ожидается сказать трудно) мини курса по Django , пока что самые азы, для тех кто с django еще не работал, постепенно буду раскрывать весь потенциал фреймворка, от легкого к сложному
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/django-tutorial-part-2-nachalo-sozdanie-proekta-i-prilojeniia-5dd807f3710eb34d51c32e60
https://zen.yandex.ru/media/id/5cbb4adabc785500b3b6b47b/django-tutorial-part-2-nachalo-sozdanie-proekta-i-prilojeniia-5dd807f3710eb34d51c32e60
Яндекс Дзен
Django tutorial: part 2 - Начало (Создание проекта и приложения)
Мы будем использовать самый тривиальный способ для установки Django: