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
42%
True
17%
False
20%
Ошибку
22%
Узнать ответ
⚡️ Только ключевые и только позиционные аргументы

Давайте для начала разберёмся. Позиционные аргументы — параметры, которые задаются только в определённом порядке. Они не поддерживают конструкцию типа key = value.

Ключевые аргументы — те, что получают значения через ключ. Они работают только с конструкцией key = value.

Для того, что бы задать порядок позиционных аргументов пишут /. Всё, что находится до этого символа будет зависеть от позиции. Ключевые же используют *, всё что после неё будет задавать только через ключ.

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

Больше примеров можно найти на сайте документации.

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

Условие:

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

Пример:

list_diff([], []) -> []
list_diff([], [1, 2]) -> []
list_diff([1, 2], [2]) -> [1]
list_diff([6, 4, 3], [7]) -> [6, 4, 3]

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

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

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

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

То есть, если вы создадите функцию внутри функции и используете nonlocal, то будет использоваться не глобальная переменная, а та, что в функции-родителя (смотреть method2).

Стоит отметить, что в отличии от global, nonlocal требует, что бы переменная уже была определена.

Ну и как всегда — документация :)

#теория #операторы
Что выведет этот код?
Anonymous Quiz
21%
0
39%
[0]
31%
Ошибку
9%
Узнать ответ
⚡️ Упрощаем поиск багов

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

Оператор принимает одну булевскую переменную, которая, если будет равняться False, выбросит исключение AssertionError.

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

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

Условие:

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

Пример:

 -> some_class_name
change_to_lower("variableName") -> variable_name
change_to_lower("test") -> test

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

#Задачка_с_собеседования
⚡️ Ответ на предыдущую задачу
Что выведет этот код?
Anonymous Quiz
14%
6
26%
14
12%
42
48%
Ошибку
⚡️ Работаем с комплексными числами

Встроенный тип complex позволяет преобразовать строку в комплексное число. Для этого достаточно написать некое значение и к нему добавить — это будет комплексное число.

Он принимает в себя строку или real и imag числа. Если же imag не указан, то по умолчанию будет 0.

Для обработки вызывает __complex__(), а если метод не определён, то используется __float__() или __index__().

Действия комплексных чисел с действительными будет возвращать тот же класс — complex.

Также он имеет атрибуты real и image, которые и отвечают за действительное и комплексное числа.

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

Условие:

Ваша задача — написать функцию, которая будет превращать список из нулей и единиц (битов) в целое число.

Пример:

list_to_int([0, 0, 0, 1]) -> 1
list_to_int([0, 1, 0, 1]) -> 5
list_to_int([1, 1, 1, 1, 1]) -> 31
list_to_int([1, 1, 1, 1, 0]) -> 30
list_to_int([1 for _ in range(16)]) -> 65535

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

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

Воспользуемся wget — это небольшая высокоуровневая библиотека, которая загружает файлы из URL-адреса. Это единственное, что она умеет, так что вы не запутаетесь.

Если вам необходимо настроить запрос, то лучше воспользуйтесь requests.

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

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

Если же вы не желаете писать скрипт, то просто воспользуйтесь ею как модулем. Например python3 -m wget <link>

#миниурок #wget
⚡️ Работаем с csv файлами

В этом нам поможет предустановленный модуль — csv.

writer и reader позволяет работать с текстовыми данными напрямую, оставляя обработку за программистом.

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

writer же возвращает класс и для записи требует writerow.

Если вы желаете работать с обработанным файлом, то воспользуйтесь DictWriter и DictReader, которые преобразуют данные в список.

#миниурок #csv