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

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

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

РКН реестр:
https://knd.gov.ru/license?id=67847dd98e552d6b54a511ed&registryType=bloggersPermission
Download Telegram
⚡️ Что такое ссылочные типы?

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

С помощью ссылок вы можете взаимодействовать с объектом. Например, считывать данные или редактировать их.

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

Кстати, dict, list, set это всё ссылочные типы. Будьте осторожны, если собираетесь создавать методы для работы с ними.

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

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

Условие:

Вы — разработчик игры и у вас есть три уровня. За их прохождение даётся различное кол-во очков, оно указано в mult_round.

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

На вход идёт словарь типа Имя игрока: результаты раунда (массив). Массив может быть разным из-за ошибки вычисления или если игрок вышел во время раунда (пустой массив или меньше трёх элементов).

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

Пример — на изображении выше.

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

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

Тут у нас есть два варианта:

Первый — преобразовать аргумент в ожидаемый тип, как на примере выше.

Таким образом вы получите копию объекта и будете уверены, что параметр имеет необходимый тип.

Но если у вас нет доступа к исходному коду функции, можно воспользоваться модулем copy. Одноимённый метод copy возвращает поверхностную копию объекта, а deepcopy — глубокую.

Разница между ними в том, что глубокое копирование также создаёт копию всех классов внутри.

#миниурок #copy
Что выведет код выше?
Anonymous Quiz
4%
5
9%
6
10%
7
18%
10
31%
Ошибку
29%
Узнать ответ
⚡️ Учимся работать с дебагером

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

В python есть встроенный дебагер — модуль pdb. Для начала работы с ним напишите python3 -m pdb script_name.py в консоль.

Вот парочка команд этого обработчика:

w(here) — выводит строку, на которой сейчас находится дебагер.

s(tep) — выполняет линию кода и останавливается при первом вхождении.

n(next) выполняется до того, пока указатель не будет на следующей строке.

a(args) — выводит аргументы функции.

debug — позволяет выполнять код, взаимодействуя с объектами внутри.
⚡️ Задачка с собеседования | #Easy

Условие:

Ваша задача на этот раз — просто написать функцию для просчёта факториала.

Пример:

factorial(10) -> 3628800
factorial(3) -> 6
factorial(1) -> 1
factorial(-1) -> 1

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

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

Думаю многие знают про функцию type, она возвращает тип объекта. Но что если я скажу вам, что с помощью неё можно создавать классы?

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

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

Примечательно, что если вы попробуете взять атрибут __class__, то получите тип объекта.

#теория
⚡️ Часто используемые методы в numpy

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

• np.array — создаёт numpy массив из списка. np.zeros, np.ones, np.empty также создают массив, но заполняют его нулями, единицами, и случайными значениями.

• p.concatenate — соединяет несколько массивов в один. Принимает кортеж из массивов. Также можно передать axis, который будет считать, в каком направлении их нужно соединять.

• arr.reshape — преобразует форму arr в переданный аргумент. Какая форма установлена сейчас, можно посмотреть, написав arr.shape.

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

Условие:

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

Пример:

is_prime_number(1) -> True
is_prime_number(2) -> True
is_prime_number(9) -> False
is_prime_number(117) -> False
is_prime_number(127) -> True

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

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

Метакласс — это класс для создания типов. Помните, ранее мы писали про type? Так вот, вы можете создать свою реализацию этого объекта.

Метакласс задаётся при создании класса — для этого в скобочках необходимо написать metaclass=MetaClassType.

На примере выше мы просто переводим все атрибуты в нижний регистр при создании класса.

Стоит добавить, что метаклассы — это вещь, которая не особо часто используется и необходима людям, которые действительно знают, что с этим делать.

Поэтому если вы новичок и ничего не поняли, то ничего страшного.

#миниурок #метаклассы
Что выведет код выше?
Anonymous Quiz
13%
Ничего
8%
1
33%
1 2
30%
Ошибку
16%
Узнать ответ
⚡️ Визуализируем инфорацию

В этот раз поговорим о библиотеке bokeh, которая помогает строить графики особых знаний.

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

Модуль позволяет составлять множество графиков и переводит всё это в html. После этого вы можете взаимодействовать с ними и, например, экспортировать изображение из браузера.

На примере выше мы берём информацию (она взята из SteamDB), создаём фигуру и заполняем её информацией, а с помощью show выводим данные в html и открываем в браузере.

Почитать ещё больше об этом можно на сайте документации.