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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Встроенные функции в Python

Если вы хоть раз писали hello world, значит ими точно пользовались. Но print — не единственная встроенная функция. Их, приблизительно, 71 штука.

float(), int(), list(), set(), str(), tuple(), dict() — основные типы в Python: список, строка, кортеж, словарь.

max(), min(), abs() — возвращают максимальное, минимальное число из списка. А последняя функция — абсолютное число.

zip(), enumerate(), reversed() — три отличных помощника при работе с циклами.

Вряд ли получится уместить все функции в одну статью, да и необходимости в этом нет, если всё можно найти в документации.

#теория
⚡️ Классы, хранящие данные

Если вы писали какие-либо системы, то вам точно было необходимо передавать данные между ними в классах. Чтобы упростить создание таких классов, разработчики придумали dataclass.

Это декоратор, переопределяющий __init__, __repr__ и другие, на основе переменных, определённых внутри класса.

Как видно из примера выше, Point не имеет никаких методов для инициализации или вывода, но они переопределены. Это напоминает структуры из си-подобных языков.

Если вам стало интересно, можете почитать подробнее в документации.

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

Условие:

Вам необходимо сделать красивый и читаемый вывод телефона. На вход идёт строка с номером, а возвращает функция номер в таком формате: (000) 000 0000

Примеры:

format_phone('0000000000') -> '(000) 000 0000'
format_phone('8005553535') -> '(800) 555 3535'
format_phone('1234567890') -> '(123) 456 7890'

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
⚡️ Аннотация типов. Часть 2

В предыдущей части мы разобрали, как работать с базовыми типами (int, float, str), но что, если функция принимает что-то потяжелее (list[float], dict) или может возвращать не один тип?

В таком случае, для коллекций в модуле typing существуют специальные типы, такие как List (в Python3.9 можно использовать встроенный list), Tuple или Dict.

А если функция возвращает несколько типов? Тогда в модуле стоит использовать Union, оповещающий об использовании нескольких типов. Если же это один любой тип и None, то лучше использовать Optional.

Если что-то не понятно (а вам, скорее всего, непонятно будет всё, потому что тема не самая простая), посетите страницу документации и поизучайте её какое-то время.

#теория
Что выведет код выше?
Anonymous Quiz
8%
None
32%
2
36%
3
17%
Ошибку
7%
Узнать ответ
⚡️ Взаимодействуем с JSON

JSON
— текстовый формат для передачи данных. Внутри него удобно хранить данные, в некоторых случаях — настройки приложения. Работать с ним можно с помощью модуля json.

json.loads(str) — переводит строку в объект Python, например, в disct или list.

json.dumps(obj) — переводит объект в строку JSON. Если добавить sort_keys=True и indent=4, то можно получить красивый вывод.

Если вам необходим больший функционал, то посетите страницу документации.

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

Условие:

Напишите функцию, которая проверяет, существует ли такой ipv4 адрес. В строке должно быть 4 числа, разделённых точкой, входящие в промежуток [0, 255].

Примеры:

check_ip('10.10.10.10') -> True
check_ip('
255.255.255.254') -> True
check_ip('
192.168.0.0') -> False
check_ip('
192.168.0.1') -> True
check_ip('
192.168.0.255') -> False


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

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

Для этого придумали модуль phonenumbers, позволяющий форматировать, парсить и проверять номера.

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

parse(number, country)
— выводит полезную информацию о введённом номере.

is_possible_number(num), is_valid_number(num) — проверяют, может ли такой номер существовать и верный ли он.

format_number(num) — выводит номер в необходимом формате из перечисления PhoneNumberFormat.

И это ещё не всё. Подробнее о модуле можно почитать в документации.

#миниурок #phonenumbers
Что выведет код выше?
Anonymous Quiz
34%
2 3 4
20%
2 4 3
15%
2 4 None
15%
2 None 4
16%
Узнать ответ
⚡️ Работаем с таблицами

Для этого придумали модуль tablib, позволяющий быстро создавать, изменять и экспортировать таблицы.

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

Dataset()
— основной класс, работающий с таблицой. Ниже будут его методы.

append(data) — заполняет таблицу, используя итерируемый объект из data.

export(type) — очень удобная функция, позволяющая сохранять таблицу в различных форматах.

Подробнее с ней можете ознакомится на сайте документации.

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

Условие:

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

Примеры:

insert_into([1, 2, 3, 5, 6], 4) -> 3
insert_into([1, 2, 4, 5], 4) -> 2
insert_into([1, 3, 2, 6], -1) -> 0

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

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

Для этого в Python существует модуль xml.dom или, с минимальной реализацией, xml.dom.minidom, о котором мы и поговорим.

parse(file) — считывает и парсит модель из файла file. Возвращает Document из того же модуля.

parseString(str) — парсит DOM из строки. Возвращает тот же Document, что и parse.

Подробнее же об объектах можете почитать на сайте документации.

#миниурок #xml #dom