Python Community
12.9K subscribers
1.24K photos
35 videos
15 files
730 links
Python Community RU - СНГ сообщество Python-разработчиков

Чат канала: @python_community_chat

Сотрудничество: @cyberJohnny и @Sergey_bzd

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Что за Global Interpreter Lock (GIL)

Если вы интересовались многопоточными программами, то слышали про этот термин. Это означает, что в определённый момент интерпретатором будет выполняться только один поток.

Она не особо влияет на производительность, если приложение работает с I/O-операциями (чтение, запись файла), но если оно активно использует процессор, то никакого прироста от многопоточности вы не получите.

Почему до сих пор не исправили? Есть решения, но они либо очень сложные, либо сделают только хуже. Но, не смотря на это, разработчики сильно улучшили GIL в последних версиях Python.

#теория
👍3
⚡️ Замыкание

Это возможность вложенной функции получить доступ к данным во внешней даже после того, как та выполнилась.

На его основе строится около половины алгоритмов в функциональном программировании. А ещё замыкание позволяет инкапсулировать код.

С этой штукой надо быть осторожным и без надобности не использовать, поскольку она довольно требовательная к ресурсам пк.

#теория
👍8
🤔5👍1
⚡️ Три помощника при работе с циклами

enumerate(iter, start=0) — проходится по итератору и возвращает кортеж (индекс, значение). Если задать второй параметр, то индекс сместиться на start единиц.

zip(a, b, c...) — параллельно проходит по всем объектам, возвращая по элементу с каждого.

reversed(obj) — просто переворачивает obj. Если это не возможно — возвращает ошибку.

Если вы что-то не поняли, то можете посетить документацию: enumerate, zip и reversed.

#теория
👍3
Что выведет этот код?
Anonymous Quiz
15%
101
39%
0b101
39%
5
7%
Узнать ответ
⚡️ Немного про регулярные выражения

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

Один разработчик нашёл способ как это исправить используя f-строки в Python. Вот его статья.

#миниурок #re
👍3
⚡️ Задачка с собеседования | #Easy

Условие:

Список [0, 1, 3, 6, 10] можно разделить на части: [0, 1, 3, 6, 10], [1, 3, 6, 10], [3, 6, 10], ..., []. Вам надо найти сумму всех этих частей.

Пример:

partssums([0, 1, 3, 6, 10]) ➞ [20, 20, 19, 16, 10, 0]
partssums([1, 2, 3, 4, 5, 6]) ➞ [21, 20, 18, 15, 11, 6, 0]


📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
👍2
⚡️ Ответ на предыдущую задачу
⚡️ Переопределяем поведение

Python используется магические методы (__eq__, __add__) при работе с операторами (==, +) и не только. Список действий и магических методом можно найти в operator.

Суть в том, что мы можем менять поведение операторов за счёт переопределения этих самых магических методов. Хорошим примером является pathlib с делением.

Кстати, магическими методами называют всё, что окружено двойными подчёркиваниями. Это и __init__, и __str__ и остальные.

#теория
👍1
👍2🤔2
⚡️ Быстро поднимаем HTTP сервер

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

В таком случае нам надо зайти в папку с нужными файлами и ввести python3 -m http.server. Понятное дело, там должен быть Python.

Потом на другом устройстве вводим wget <IP пк, на котором запустили сервер>:порт/файл. Для загрузки secret.txt, например, пишем: 192.168.0.108:8000/secret.txt.

Проблемы могут возникнуть только если устройства не в одной локальной сети, мешает брандмауэр или вы что-то неправильно ввели.

#теория
👍4
⚡️ Задачка с собеседования | #Easy

Условие:

Ваша задача посчитать формулу (1 / n!) * (1! + 2! + 3! + ... + n!), где n! это factorial(n) и округлить результат до 6 чисел.

Пример:

going(5) ➞ 1.275
going(6) ➞ 1.2125
going(10) ➞ 1.11274

📌 Пишите ваше решение в комментариях. Решение будет через несколько часов на этом канале. 👇

#Задачка_с_собеседования
👍2
⚡️ Ответ на предыдущую задачу
⚡️ Создаём интерфейс командной строки

Если вы пишите консольное приложение, то обязаны позаботиться о том, чтобы пользователям было удобно им пользоваться. CLI вам поможет создать fire.

Установка: pip install fire

Модуль придерживается ООПшного стиля, что сильно упрощает интеграцию к себе в проект.

Также он предоставляет доступ ко всем атрибутам, которые переданы в него. Об этом и не только подробнее в документации.

#миниурок #fire
👍1🔥1