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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
👍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
⚡️ Оператор with

Используется для оборачивания выполнения блока инструкций менеджером контекста. Выглядит намного проще и красивее, чем try/except/finally.

Первым делом вызывается __enter__, где класс выполняет важные операции. Например, открывает файл.

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

Подробнее об этом операторе написали в PEP 343.

#теория
👍4
Что выведет этот код?
Anonymous Quiz
32%
True
63%
False
5%
Узнать ответ
⚡️ Context Manager

Помните про with? Там рассказывалось про его использование с классами, но ничто не мешает использовать его с функциями. Только нужна библиотека contextlib.

Чтобы функция могла работать с with, вы добавляете @contextmanager или @asynccontextmanager, в зависимости от того, нужно ли вам асинхронное выполнение.

Только ещё вам нужно yield, чтобы вернуть объект, с которым будет работать with и при этом только приостановить работу функции. Подробнее.

#миниурок #contextlib
👍8
Что выведет этот код?
Anonymous Quiz
16%
a
41%
<lambda>
17%
None
14%
Ошибку
11%
Узнать ответ
Multithreading vs Multiprocessing

Multithreading предполагает, что процессор может выполнять несколько потоков одновременно, где каждый поток запускает процесс. Хорошо справляется с IO нагрузкой.

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

#миниурок #multithreading #multiprocessing
👍7
Что выведет этот код?
Anonymous Quiz
19%
True
60%
False
12%
Ошибку
9%
Узнать ответ
🔥1
⚡️ Дескрипторы

Они используются для изменения поведения атрибутов. То есть модификация получения, изменения, и удаления свойств класса.

Их основное отличие это методы __get__(obj, objtype), __set__(obj, value), __delete__(obj), которые используются для получения, изменения и удаления атрибута.

На самом деле, тема довольно сложная, но в документации есть отличное HowTo, которое описывает все особенности дескрипторов и их возможное применение.

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

Условие:

Вам нужно найти все числа внутри строки. Даже те, что находятся внутри слов.

Пример:

find_numbers('hello 42 I`m a 32') ➞ ['42', '32']
find_numbers('bla42bla') ➞ ['42']
find_numbers('33.33, 1234 1') ➞ ['33', '33', '1234', '1']

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

#Задачка_с_собеседования
👍4
⚡️ Ответ на предыдущую задачу
⚡️ @staticmethod и @classmethod

Декораторы говорят о том, как будут другие объекты обращаться к методу.

@staticmethod обозначает метод статическим, то есть он никак не работает с экземпляром, а значит и не принимает self. Её можно вызывать без создания экземпляра.

@classmethod — метод, который привязан к классу, а не к экземпляру класса. Используется, когда вам нужен метод, не относящийся к экземпляру, но тем не менее привязанный к классу.

#теория
👍5