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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
Что выведет этот код?
Anonymous Quiz
20%
a: 1
17%
a: 2
27%
b: 2
16%
Ошибку
21%
Узнать ответ
⚡️ Узнаём о системе подробнее

Предустановленный модуль platform позволяет узнать различные характеристики устройства и ПО, такие как архитектуру процессора, версию Python и даже название компьютера в сети.

node() — возвращает название устройства в сети. Если значение не удаётся определить, возвращается пустая строка.

system() — вернёт операционную систему. Linux, Windows или Darwin — здесь всё и так понятно.

python_version() — скажет о версии компилятора python в виде строки. А вот python_version_tuple() вернёт значение в виде кортежа.

Ещё подробнее, как обычно, на сайте документации.

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

Условие:

Ваша задача — найти суму всех чисел, перемноженных на их индекс.

Пример:

sum_mult_index([1,2,3,4]) -> 20
sum_mult_index([11,22,55,33,44]) -> 407
sum_mult_index([-1, 0, -8, 11]) -> 17
sum_mult_index([0, 0, 0, 0, 0]) -> 0


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

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

Знаете ли вы, что сложение, вычитание и так далее — это не заранее написанные функции, а просто методы класса?

Это значит, что их можно переопределить и задать своё поведение.

Отличным примеров является ранее упомянутый pathlib, в котором мы изменили действия деления.

На фотографии выше мы переопределяем __add__ и __sub__, которые отвечают за сложение и вычитание.

В одном посте невозможно описать все действия, поэтому, как обычно, оставляем вам ссылку на сайт документации ;)

| P.S:
Пост о dataclass был тут.

#миниурок #pathlib
⚡️ Модуль __future__

Желаете запустить новый скрипт на старой версии python? Переписывать — долго и скучно. Лучше воспользуйтесь модулем __future__,

Он хранит в себе реализации будущих компонентов, например print и division.

В качестве пасхалки, вы также можете можете импортировать фигурные скобочки, как в си подобных языках с помощью from __future__ import braces. Но это вызовет исключение: SyntaxError: not a chance

Если вы хотите изучить это более подробно — добро пожаловать на сайт документации ;)

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

Условие:

Найти «счастливый» ip. Он считается счастливым, если сумма двух байтов с левой стороны равняются сумме двух байтов с правой стороны.

На вход функции всегда идёт строка с ipv4 адресом.

Пример:
is_happy_ip("255.255.255.255") -> True
is_happy_ip("0.0.0.1") -> False
is_happy_ip("101.78.170.9") -> True

P.S. 1 байт - число от 0 до 255

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Скрытые фишки функции open

open
— это функция, которая позволяет работать с файлами. Но не многие знают, что она использует разные классы из модуля io.

• TextIOWrapper
— реализует TextIOBase, используется для работы с строковыми объектами внутри файла. Он определяет метод encoding, переменные errors, newlines etc.

• Buffered(Reader/Writer) — реализует BufferedIOBase, используется для работы с двоичными данными. Он определяет readinto, readinto1, flush и write для writer.

• TextIOBase и BufferedIOBase являются наследниками IOBase и реализуют close, readline, seek, и т.д.

Подробнее — в документации документации

#миниурок #функции #io
⚡️ Работаем с временными файлами

Бывают такие ситуации, когда держать информацию в оперативной памяти не желательно или вообще невозможно. Модуль tempfile может справиться с этой задачей.

TemporaryFile() — создаёт временный файл и позволяет контролировать его, как обычный битовый поток. По умолчанию, режим работы — w+b (чтение, запись, битовый файл).

TemporaryDirectory() — создаёт временную директорию. Возвращает путь к этой самой паке в виде строки.

mkstemp() — создаёт файл и накладывает управление им на вас. Возвращает кортеж из дескриптора уровня ОС и пути. mkdtemp() выполняет тоже самое, только работает с папками

gettempdir() — возвращает путь к папке со всеми временными директориями и файлами

По окончанию работы программы TemporaryFile и TemporaryDirectory автоматически удаляються.

#миниурок #tempfile
Что выведет код выше?
Anonymous Quiz
37%
300
10%
400
7%
500
30%
Ошибку
17%
Узнать ответ
⚡️ Сравниваем файлы

Конечно, можно использовать обычный open, считывать данные и потом их сравнивать. Но зачем, когда есть модуль filecmp, который имеет больший функционал.

cmp(file1, file2) — сравнивает два файла. Возвращает true, если они равны, иначе — false.

dircmp(dir1, dir2) — класс, который сравнивает файлы внутри папок. Хранит внутри себя всю информацию о работе. Например файлы, которые невозможно отсканировать или одинаковые/разные объекты.

Подробнее, как всегда — на сайте документации.

#миниурок #filecmp
⚡️ Работаем с командной строкой

В этом нам поможет модуль subprocess — он позволяет создавать новые процессы, подключать вывод и работать с кодом возврата.

Пройдемся по его методам:

run(args) — вызывает команду, переданную в args. Ожидает её выполнения и возвращает CompletedProcess. Если возникает ошибка, то вызывает CalledProcessError.

Popen(args)
— класс, который вызывает args команду в виде нового процесса.

STDOUT — особая переменная, которая говорит, что данные должны идти на вывод в ту же консоль.

DEVNULL — особая переменная, которая избавляется от всех входящих данных.

#миниурок #subprocess
Что выведет этот код?
Anonymous Quiz
52%
True
15%
False
13%
Ошибку
21%
Узнать ответ