gram news
CoolPython channel avatar

CoolPython

@coolpython

Канал об основах Python и хороших практиках разработки. Создаём системность в обрывочных знаниях. Тем, кто хочет понимать, что пишет!

ProjectsRUProgramming

4,264subscribers

Open the Channel

Latest posts

  • CoolPython

    7 Oct 2025, 22:36edited

    Исторический момент: выходит Python 3.14 и они там отменяют GIL. Дожили, поздравляю нас!🎉Всем, кто хоть раз в жизни писал код в несколько тредов на питоне и ломал голову, почему не ускоряется😁 Это ваш день!Глобальная блокировка десятилетиями неявно ограничивала интерпретатор, а мы пользовались multiprocessing-ом, расширениями на плюсах и всякими костылями, чтобы задействовать все ядра процессора.Это первый стабильный (не экспериментальный) релиз, в котором интерпретатор без GIL поддерживается официально. Теперь: - появляются тру параллельные треды на чистом питоне, - Async начинает работать с тредами, - реализовано нормальное масштабирование на нескольких ядрах для data-intensive задач, машинки и прочих симуляций.Это не очередной релиз, а прям веха в эволюции языка.Как человек, который много лет живет питоном, я реально в восторге.Пока, GIL!
    3,90025247631Open in Telegram
  • CoolPython

    25 Jul 2024, 01:40

    Вы, наверное, знаете, что из-за того, что числа в памяти представлены в двоичной форме, в Python есть ошибка видаprint(0.1 + 0.2) # 0.30000000000000004В Python модуль decimal поддерживает точную арифметику десятичных чисел. Она важна в областях, требующих высокой точности, например, в финансах или научных расчетах.А вот кто скажет, почему возникает разница в примерах ниже?1️⃣from decimal import Decimala = Decimal(0.1) b = Decimal(0.2) print(a + b) # 0.30000000000000001665334536942️⃣
    7,250211042Open in Telegram
  • CoolPython

    11 Mar 2024, 17:50edited

    Вау, в Python будет можно по желанию отключить GIL. В мейн буквально пару часов назад вмержили эту настройкуhttps://github.com/python/cpython/pull/116338GIL (Global Interpreter Lock) — это механизм в CPython, который предотвращает одновременное выполнение нескольких потоков.Это всю дорогу означало, что даже если мы пишем программу на Python как многопоточную, то в любой момент времени может выполняться только один тред.С одной стороны, это ограничивало возможности параллельного выполнения кода даже на многоядерных процессорах. С другой, облегчало управление памятью в Python: такое решение исключает все особенности многопоточного программирования и делает проще работу программиста.Наличие GIL годами было предметом дебатов и критики из-за ограничений на многопоточность. Я рада, что парадигма однопоточности Python наконец сдвигается: это реально изменит разработку на этом языке.
    GitHubgh-116167: Allow disabling the GIL with `PYTHON_GIL=0` or `-X gil=0` by swtaarrs · Pull Request #116338 · python/cpythonIn free-threaded builds, running with PYTHON_GIL=0 or -X gil=0 will now disable the GIL. #116322 and #116329 track follow-up work to re-enable the GIL when loading an incompatible extension, and to...
    8,5702973222Open in Telegram
  • CoolPython

    4 Jul 2023, 13:02

    Генератор кортежейГенераторы списков — это конструкции вида[x for x in range(5)] # [0, 1, 2, 3, 4]Чаще всего их используют для создания списков на лету. Но можно создавать и словари, если использовать фигурные скобки и пары значений, разделенных двоеточием:{n: n2 for n in range(5)} # {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}Кортеж так создать не получится, потому что круглые скобки зарезервированы под генераторные выражения.Но если все же хочется создать кортеж на лету именно этим способом, то можно вот так:(x for x in range(5)), # (0, 1, 2, 3, 4)То есть, распаковываем и ставим запятую, чтобы обозначить, что это кортеж. Такие дела!
    10,5005714432Open in Telegram
  • CoolPython

    12 Jun 2023, 14:06

    Вопрос от студента: как использовать в map функцию с параметром?Все, кто сталкивался с map(), знают, как использовать её, если параметры не нужны. Например, с map() можно привести числа в списке к абсолютным значениямnumbers = [-1, 2, -3, 4, -5] absolute_values = list(map(abs, numbers)) print(absolute_values) # [1, 2, 3, 4, 5]Или преобразовать все строки в верхнему региструnames = ["alice", "bob", "charlie", "david"] print(list(map(str.upper, names))) # ["ALICE", "BOB", "CHARLIE", "DAVID"]А что делать в случае, если map нуждается в параметре? Например, есть списокnumbers = [0, 0.333, 0.667, 1]и требуется округлить все числа до 1 знака после запятой, то есть, получить
    8,590506331Open in Telegram
  • CoolPython

    31 May 2023, 16:45edited

    try, except, finally и оператор return в Python: как работает finally при наличии returnPython предоставляет механизм обработки исключений с помощью операторов try, except и finally. Когда внутри блока try возникает исключение, оно может быть перехвачено и обработано в блоке except. Кроме того, блок finally позволяет выполнять нужные вам действия независимо от того, произошло исключение или нет.Но если внутри блока finally использовать оператор return, как в примере выше, возникает особенность.Вот ещё раз пример кода из опроса:def try_with_returns(): try: return 'try clause' except: return 'exception clause' finally: return 'final clause'print(try_with_returns())Можно ожидать, что будет выведено 'try clause' и 'final clause', но фактически выводится только 'final clause'. Почему?
    Python documentation8. Errors and ExceptionsUntil now error messages haven’t been more than mentioned, but if you have tried out the examples you have probably seen some. There are (at least) two distinguishable kinds of errors: syntax error...
    5,93051103Open in Telegram
  • CoolPython

    31 May 2023, 15:13

    3,930poll362Open in Telegram
  • CoolPython

    31 May 2023, 15:07

    Что выведет этот фрагмент кода? Ниже квиз
    Image from a post by CoolPythonImage from a post by CoolPython
    3,99021Open in Telegram
  • CoolPython

    25 May 2023, 12:57

    Рассказали о разнице функций input и raw_input в Python2 в карточках. Читайте!Карточки подготовили вместе с @pro_python_code
    Image from a post by CoolPythonImage from a post by CoolPythonImage from a post by CoolPythonImage from a post by CoolPython
    5,08031651Open in Telegram
  • CoolPython

    15 May 2023, 13:49edited

    Стек и очередьИдеи стека и очереди часто встречаются в различных языках программирования. Давайте разберемся, в каких ситуациях их применение уместно и удобно программисту.С очередями мы сталкиваемся практически везде. В магазине очередь – это группа людей, которые стоят друг за другом, например, на кассу с продуктами. Тот, кто стоит ближе к кассе, оплатит свои продукты первым.В программировании очередь работает аналогично. Очередь в программировании — это коллекция элементов, которые обрабатываются по принципу «первый зашел — первый вышел» (FIFO).Очередь прекрасно подходит к задачам, которые нужно делать поэтапно. Например, если пользователь загружает несколько изображений на сайт, чтобы сервер мог их обработать и сохранить, загружаемые файлы помещаются в очередь на обработку. И первый файл, который пользователь загрузил, будет первым обработан на сервере.Стек работает
    5,4002710541Open in Telegram
  • CoolPython

    1 May 2023, 17:15

    5,370poll221094Open in Telegram
  • CoolPython

    19 Apr 2023, 19:44edited

    Канал переименован из Python in Depth в CoolPython
    6,86036166442Open in Telegram
  • CoolPython

    19 Apr 2023, 19:44edited

    Что такое JSON?JSON (JavaScript Object Notation) – это удобный для чтения человеком и машиной структурированный формат, который используют для обмена данными.JSON представляет собой наборы пар «ключ: значение» и основан на базе синтаксиса объектов JavaScript. При этом JSON считается независимым от JavaScript, так как может использоваться с любым языком программирования.ИсторияСоздатель формата JSON – Дуглас Крокфорд, американский программист, принимающий активное участие в развитии JavaScript. В 2001 году, во время работы в своей компании State Software он разработал стандарт JSON как аналог формата XML, который уже существовал в тот момент.Дугласу нужна была технология, позволяющая передавать данные в приложение до загрузки начальной страницы браузера, но еще не было формата, который работал бы со всеми браузерами.Самое первое сообщение JSON было отправлено в 2001 году. Вот
    6,740281Open in Telegram
  • CoolPython

    27 Oct 2022, 09:40

    Фича f-строк, о которой вы не зналиСмотрите, вот обычная f-строка>>> text = 'JUPI' >>> print(f'{text}') JUPIЕсли я добавлю в нее двоеточие, символ-заполнитель, и укажу требуемую длину строки с помощью символа <>>> print(f'{text:-<15}')То не занятый текстом остаток строки будет заполнен выбранным символом:JUPI-----------Если указать длину строки через >, то можно заполнить строку с левой стороны:
    Python Enhancement Proposals (PEPs)PEP 498 – Literal String Interpolation | peps.python.orgPython supports multiple ways to format text strings. These include %-formatting 1, str.format() 2, and string.Template 3. Each of these methods have their advantages, but in addition have disadvantages that make them cumbersome to use in practice. This...
    11,80053158553Open in Telegram
  • CoolPython

    24 Oct 2022, 10:34edited

    Сегодня в 18:00 UTC+2 релизят Python 3.11 в прямом эфире, смотреть можно по ссылке ниже:https://www.youtube.com/watch?v=PGZPSWZSkJIUPD: еще можно подписаться на их youtube, чтобы не пропускать релизы в будущем, если вам интересно
    YouTubePython 3.11 ReleaseTimestamps 00:00 - Introduction 24:30 - Brandt Bucher, Specializing Adaptive Interpreter 50:40 - Mark Shannon, Other Speedups 1:07:42 - Irit Katriel, Exception Improvements and Features 1:42:13 - Pablo Galindo, Better Tracebacks 1:58:46 - Pablo Galindo, tomllib…
    9,89025732Open in Telegram
  • CoolPython

    8 Jul 2022, 13:43

    forwarded from @advice17

    Работа import и структура проектаКогда вы импортируете какой-то модуль в вашем коде, питон не учитывает, в каком файле этот импорт находится, влияет только то, как был запущен код. Если модуль не был раньше загружен, питон пытается его найти по очереди в нескольких папках, которые можно посмотреть в переменной sys.pathПо умолчанию она содержит примерно такие каталоги: каталог, добавляемый при запуске каталоги указанные в переменной окружения PYTHONPATH каталог текущего активированного виртуального окружения каталог установки python1. Если вы запускаете ваш скрипт командой python scriptname.py, то первым в списке будет тот каталог, где находится запускаемый скрипт. Текущий каталог не имеет значения. 2. Если вы запускаете ваш код командой python -m packagename, то первым в списке будет текущий каталог. При запуске питон попытается найти и импортировать packagename по общим правилам.
    9,550345221Open in Telegram
  • CoolPython

    18 Jun 2022, 20:56edited

    У нас опять есть группа, можно покомментить и покидаться какашкамиUPD Правила игры те же: нетоксично про питон, программирование, инфраструктуру и за жизнь. Но нужно быть пуськой.UPD2 https://t.me/+CgNMmJwzjYI1MmYy
    9,420231361Open in Telegram
  • CoolPython

    18 Jun 2022, 20:45

    Делюсь с вами коллективным учебником по машинному обучению из Яндекса. На самом деле наполовину делюсь, наполовину сохраняю себе, чтобы прочитать позже. Теплый привет Вите Кантору
    6,35023311Open in Telegram
  • CoolPython

    20 May 2022, 09:06edited

    / и в определнии функцииВидели когда-нибудь вот такой синтаксис?def foo(first, /, second, , third): print(first, second, third)Выглядит странно?На самом деле / и навязывают положение ключевых и позиционных аргументов.Попытаемся, например, вызвать foo() с неправильным набором параметров:>>> foo("bar", "qux") ... TypeError: foo() missing 1 required keyword-only argument: 'third'Нужен keyword аргумент, окей, укажем все параметры:>>> foo("bar", "baz", "qux")
    8,42056764Open in Telegram
  • CoolPython

    27 Apr 2022, 12:11edited

    Пара фактов о численных типах (которые вы, возможно, не знали)Факт 1В Python есть три встроенных численных типа. Кроме int и float, которыми мы обычно пользуемся, есть еще complex — комплексные числа.Комплексные числа много используют в математике (например, с их помощью можно брать некоторые забористые интегралы, которые обычным способом не берутся), и в физике (особенно в расчетах, связанных с электричеством и магнетизмом).Сконструировать комплексное число в Python можно так:a = complex(2, 1)или вот так:a = 2 + 1jПолучится одно и то же.Факт 2
    9,19085975Open in Telegram