Float или Decimal: в чём различия и что лучше использовать?
И тот, и другой предназначены для работы с дробными числами, но есть нюанс . Float использует некоторое приближение при работе с числами с плавающей точкой, поэтому может вносить ошибки округления. То есть Float эффективный и быстрый, но не очень точный.
Эта особенность может мешать в некоторых случаях, например, при работе с деньгами. Ошибки округления могут привести к значительным потерям, если обрабатывается большое количество транзакций. Тогда лучше использовать Decimal. Его нужно импортировать — from decimal import Decimal. Передавать на вход следует строку. Как видно на картинке, благодаря Decimal устраняются возможные ошибки округления.
#код
И тот, и другой предназначены для работы с дробными числами
Эта особенность может мешать в некоторых случаях, например, при работе с деньгами. Ошибки округления могут привести к значительным потерям, если обрабатывается большое количество транзакций. Тогда лучше использовать Decimal. Его нужно импортировать — from decimal import Decimal. Передавать на вход следует строку. Как видно на картинке, благодаря Decimal устраняются возможные ошибки округления.
#код
👍29❤3🤯2
🧍♂️🧍🧍♀️ Как реализовать очередь в Python
Очереди (Queues) — одна из структур данных, используемая для хранения коллекций элементов в порядке first-in, first-out (FIFO). Всё, как в настоящей очереди, — кто первым вошёл, то раньше всех и вышел.
В Python очереди можно реализовать с помощью класса deque() из модуля collections или модуля queue.
🧍♀️Чтобы добавить элементы в очередь: в deque используем метод append(), в Queue — put()
🧍Чтобы удалить элементы из очереди: в deque — метод popleft(), в Queue — get()
🧍♂️Чтобы проверить размер очереди, используем len()
Стоит отметить, что queue.Queue предназначен для многопоточного программирования.
#код
Очереди (Queues) — одна из структур данных, используемая для хранения коллекций элементов в порядке first-in, first-out (FIFO). Всё, как в настоящей очереди, — кто первым вошёл, то раньше всех и вышел.
В Python очереди можно реализовать с помощью класса deque() из модуля collections или модуля queue.
🧍♀️Чтобы добавить элементы в очередь: в deque используем метод append(), в Queue — put()
🧍Чтобы удалить элементы из очереди: в deque — метод popleft(), в Queue — get()
🧍♂️Чтобы проверить размер очереди, используем len()
Стоит отметить, что queue.Queue предназначен для многопоточного программирования.
#код
👍27❤2
🧑💻 Что делает функция takewhile() модуля itertools
Функция создаёт итератор, возвращающий элементы из итерируемого объекта до тех пор, пока указанное условие истинно (True или 1). Как только условие становится ложным, итератор прекращает свою работу и больше не возвращает элементы.
В примере takewhile будет возвращать элементы из списка my_list, пока они меньше пяти. Как только встретится элемент, равный или больший пяти, работа прекратится.
#код
Функция создаёт итератор, возвращающий элементы из итерируемого объекта до тех пор, пока указанное условие истинно (True или 1). Как только условие становится ложным, итератор прекращает свою работу и больше не возвращает элементы.
В примере takewhile будет возвращать элементы из списка my_list, пока они меньше пяти. Как только встретится элемент, равный или больший пяти, работа прекратится.
#код
👍26❤3👏2🤔1
⭐ Продолжаем изучать модуль itertools. Сегодня — функция starmap()
starmap() принимает в качестве аргументов другую функцию и итерируемый объект, элементы которого представлены кортежами. Переданная функция применяется к каждому из кортежей, каждый кортеж распаковывается, и его элементы передаются в функцию как отдельные аргументы.
🌟 Таким образом, starmap() можно использовать вместо map(), если данные были предварительно упакованы в кортежи.
В примере starmap() позволяет вычислить квадраты чисел в кортежах в списке и сложить их.
#код
starmap() принимает в качестве аргументов другую функцию и итерируемый объект, элементы которого представлены кортежами. Переданная функция применяется к каждому из кортежей, каждый кортеж распаковывается, и его элементы передаются в функцию как отдельные аргументы.
🌟 Таким образом, starmap() можно использовать вместо map(), если данные были предварительно упакованы в кортежи.
В примере starmap() позволяет вычислить квадраты чисел в кортежах в списке и сложить их.
#код
👍24🥰2
👓 Задача: Дан непустой список с целыми числами, каждый элемент которого, кроме одного, повторяется дважды. Нужно найти этот единственный элемент.
Предлагается решение через использование оператора «^» — побитового XOR (исключающее ИЛИ).
Подробное объяснение в видео
#код
Предлагается решение через использование оператора «^» — побитового XOR (исключающее ИЛИ).
Подробное объяснение в видео
#код
🔥19👍7👏1
Зачем в Python использовать конструкцию
Если коротко: так мы будем уверены, что определённый кусок кода выполнится только в случае, если мы запустим Python-скрипт напрямую. Это позволяет нам без опасений импортировать его в качестве модуля.
Если хочется подробнее, то вот видеоролик, объясняющий концепцию за две минуты
#код
if __name__ == '__main__'?Если коротко: так мы будем уверены, что определённый кусок кода выполнится только в случае, если мы запустим Python-скрипт напрямую. Это позволяет нам без опасений импортировать его в качестве модуля.
Если хочется подробнее, то вот видеоролик, объясняющий концепцию за две минуты
#код
👍31❤3👏1
🧹 Линтер Ruff для быстрого «причёсывания» кода на Python
Линтер — это программа, которая автоматически перерабатывает код, делает его «чистым» и приводит в соответствие правилам.
Почему стоит присмотреться к Ruff:
✔️ у него есть 700+ встроенных правил написания кода;
✔️ работает от 10 до 100 раз быстрее других линтеров;
✔️ поддерживает автоматическое исправление ошибок.
Все предустановленные правила можно посмотреть в документации.
📝 Подробная статья с примерами работы Ruff
#код
Линтер — это программа, которая автоматически перерабатывает код, делает его «чистым» и приводит в соответствие правилам.
Почему стоит присмотреться к Ruff:
✔️ у него есть 700+ встроенных правил написания кода;
✔️ работает от 10 до 100 раз быстрее других линтеров;
✔️ поддерживает автоматическое исправление ошибок.
Все предустановленные правила можно посмотреть в документации.
📝 Подробная статья с примерами работы Ruff
#код
❤11👍10👏1🤔1
✨ Как писать чистые функции на Python
Чистые функции — это функции, которые не имеют побочных эффектов и всегда возвращают один и тот же результат для одного и того же ввода. Они предсказуемые, не зависят от внешнего состояния программы и их легко тестировать.
Есть несколько правил написания чистых функций:
1️⃣ Избегайте изменения глобального состояния
Чистая функция не должна изменять никакое глобальное состояние или модифицировать переменные за пределами своей области видимости.
2️⃣ Избегайте изменения входных параметров
Функция должна создавать новый объект или копировать тот, что был подан на вход, если подразумевается его дальнейшая модификация.
3️⃣ Избегайте зависимости от внешнего состояния
Чистой функции не следует читать глобальные переменные или получать данные из внешних источников, таких как файлы или базы данных.
4️⃣ Всегда возвращайте значение
Это значение должно определяться исключительно входными параметрами, а не каким-либо внешним состоянием.
Книга целиком
#код
Чистые функции — это функции, которые не имеют побочных эффектов и всегда возвращают один и тот же результат для одного и того же ввода. Они предсказуемые, не зависят от внешнего состояния программы и их легко тестировать.
Есть несколько правил написания чистых функций:
1️⃣ Избегайте изменения глобального состояния
Чистая функция не должна изменять никакое глобальное состояние или модифицировать переменные за пределами своей области видимости.
2️⃣ Избегайте изменения входных параметров
Функция должна создавать новый объект или копировать тот, что был подан на вход, если подразумевается его дальнейшая модификация.
3️⃣ Избегайте зависимости от внешнего состояния
Чистой функции не следует читать глобальные переменные или получать данные из внешних источников, таких как файлы или базы данных.
4️⃣ Всегда возвращайте значение
Это значение должно определяться исключительно входными параметрами, а не каким-либо внешним состоянием.
Книга целиком
#код
👍20❤2🔥2👏1😁1
🏂 Некоторые трюки с f-строками Python
F-строки — это мощный инструмент для форматирования строк, который позволяет включать выражения и переменные непосредственно внутрь них.
Вот некоторые интересные возможности f-строк:
🟢 перевод из одной системы счисления в другую —
🟢 перевод в проценты —
🟢 арифметические операции —
🟢 форматирование объекта datetime —
Ссылка на материал, где больше примеров кода
#код
F-строки — это мощный инструмент для форматирования строк, который позволяет включать выражения и переменные непосредственно внутрь них.
Вот некоторые интересные возможности f-строк:
🟢 перевод из одной системы счисления в другую —
f'binary: {number:b}'🟢 перевод в проценты —
f'percentage = {ratio:.2%}'🟢 арифметические операции —
f'{a + b = }'🟢 форматирование объекта datetime —
f'datetime : {today}'Ссылка на материал, где больше примеров кода
#код
👍50❤1🔥1👏1
🪄 Некоторые способы упростить конструкцию if-else
1️⃣ Иногда можно выбросить else. В функции return в блоке if прерывает её выполнение, поэтому в том, чтобы писать блок else просто нет надобности.
2️⃣ Иногда можно всё написать в одну строку. Выглядит красиво, но следует помнить, что такая конструкция плохо расширяемая.
3️⃣ Вместо большого количества or в условии можно использовать последовательности. Например, можно создать кортеж и положить в него все важные для условия значения.
🔗 Более подробно — в видео
#код
1️⃣ Иногда можно выбросить else. В функции return в блоке if прерывает её выполнение, поэтому в том, чтобы писать блок else просто нет надобности.
2️⃣ Иногда можно всё написать в одну строку. Выглядит красиво, но следует помнить, что такая конструкция плохо расширяемая.
3️⃣ Вместо большого количества or в условии можно использовать последовательности. Например, можно создать кортеж и положить в него все важные для условия значения.
🔗 Более подробно — в видео
#код
👍32❤1