Python Community
12.9K subscribers
1.25K photos
33 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
⚡️ Лямбда функции

Лямбда функциями называют те, что определены с помощью lambda. Также их называют анонимными функциями, поскольку у них нет имени.

В таких функциях всегда только одно выражение, которое, чаще всего, что-то возвращает. Они могут использовать переменные из конкретной области видимости.

Таким образом нам нужно намного меньше кода для создания простой функции. Также лямбда-функции часто используются вместе с map() и filter().

#теория
👍9
⚡️ Что за 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
⚡️ Ответ на предыдущую задачу