Python School
82.3K subscribers
2.4K photos
7 videos
571 links
Уроки по Python, которые упростят вам жизнь. Без идиотских туториалов.

Наши мемы для программистов: @conhum

Сотрудничество - @alivian

Канал сотрудничает с рекламным сервисом @Tgpodbor_official

РКН: clck.ru/3G6pBb
加入频道
Декораторы

Вы можете их использовать для тонкой настройки работы класса или функции. Декораторы можно считать функцией, которая применена к другой функции. Чтобы определить функцию-декоратор для декорируемой функции, используется знак @ и после него название функции. Из этого следует, что декоратор принимает в качестве аргумента функцию, которою он декорирует.
User-Agent

Механизм защиты от скрапинга – User-Agent. UA – это заголовок, который браузеры отправляют в запросах для идентификации. Обычно он представляет собой длинную строку, в которой объявляется имя браузера, версия, платформа и многое другое.
Утечки переменных цикла (ч.1)

Но x никогда не был определен вне области действия цикла for...

В Python for-циклы используют область, в которой они существуют, и оставляют за собой определенную переменную цикла. Это также применимо, если мы ранее явно определили переменную for-loop в глобальном пространстве имен. В этом случае он повторно свяжет существующую переменную.
Утечки переменных цикла (ч.2)

Различия в выходных данных интерпретаторов Python 2.x и Python 3.x для примера понимания списков можно объяснить следующими изменениями, описанными в Что нового в Python 3.0
Хотите научиться собирать информацию из интернета, анализировать данные и автоматизировать рутину с помощью Python? Присоединяйтесь к бесплатному интенсиву с 1 по 3 июня в 19:00 по московскому времени. За 3 дня вы на практике познакомитесь с различными сферами применения языка Python, узнаете, какие навыки сейчас востребованы на фрилансе, и поймёте, как начать работать на удалёнке: ▶️ https://goo.su/N6BiJ

На интенсиве вы:

📍Попробуете свои силы в решении реальных задач из разных сфер на Python.
📍Познакомитесь с популярными библиотеками Python для парсинга и анализа данных.
📍Получите понятный ответ на вопрос о том, что нужно для работы Python-разработчиком на фрилансе.

Спикером выступит руководитель направления по исследованию данных в Сбере Анастасия Борнева. Она с 2018 года занимается автоматизацией процессов с помощью искусственного интеллекта.

🎁 Всем участникам, прошедшим интенсив, подарим электронную книгу Роджера Сайпа и Робба Збиерски «Разум под контролем» издательства МИФ. А каждый, кто оставит заявку на участие в интенсиве, получит материал с подборкой коротких и полезных программ на Python.

Подключайтесь, задавайте вопросы и получите сертификат на скидку 10 000 рублей на любой курс Skillbox
Утечки переменных цикла (ч.3)

Понимание списков больше не поддерживает синтаксическую форму [... for var in item1, item2, ...]. Используйте [... for var in (item1, item2, ...)] вместо этого. Также обратите внимание, что понимание списков имеет другую семантику: они ближе к синтаксическому сахару для выражения генератора внутри list() конструктора, и, в частности, управляющие переменные цикла больше не передаются в окружающую область видимости.
Остерегайтесь изменяемых аргументов по умолчанию (ч.1)

Изменяемые аргументы функций по умолчанию в Python на самом деле не инициализируются при каждом вызове функции. Вместо этого в качестве значения по умолчанию используется недавно присвоенное им значение. Когда мы явно передали [] в some_func качестве аргумента значение default_arg переменной по умолчанию не использовалось, поэтому функция вернулась, как ожидалось.
Остерегайтесь изменяемых аргументов по умолчанию (ч.2)

Обычная практика, позволяющая избежать ошибок из-за изменяемых аргументов, заключается в присвоении None значения по умолчанию и последующей проверке, передается ли какое-либо значение функции, соответствующей этому аргументу
Перехват исключений (ч.1)

Чтобы добавить несколько исключений в предложение except, вам нужно передать их в виде кортежа в скобках в качестве первого аргумента. Второй аргумент - это необязательное имя, которое при указании будет привязывать созданный экземпляр исключения.
Перехват исключений (ч.2)

Разделение исключения из переменной запятой устарело и не работает в Python 3; правильный способ - использовать as.
Хотите узнать больше об IT-профессии? Начните с бесплатного онлайн-интенсива Skillbox «Как выбрать язык программирования и найти работу». Выберите направление карьерной деятельности, которое будет интересно именно вам. 

За 3 дня вы:

попробуете сразу несколько востребованных IT-направлений;
узнаете, сколько платят разным IT-специалистам и на кого сейчас есть спрос;
на практике познакомитесь с самыми популярными языками программирования;
научитесь составлять резюме и готовиться к собеседованиям.
 
Интенсив бесплатный, а каждый участник получит полезные подарки. Автору лучшей практической работы по мнению спикера подарим скидку 99% на курс Skillbox 😉

Первый вебинар уже скоро — начинаем 5 июня в 19:00 (МСК). Скорее записывайтесь по ссылке 👉 https://epic.st/_HNvy
Те же операнды, другая история! (ч.1)

a += b не всегда ведет себя так же, как a = a + b. Классы могут по-разному реализовывать op= операторы, и списки делают это.

Выражение a = a + [5,6,7,8] генерирует новый список и устанавливает a ссылку на этот новый список, оставляя b без изменений.
Те же операнды, другая история! (ч.2)

Выражение a += [5,6,7,8] на самом деле сопоставлено с функцией "extend", которая работает со списком таким образом, что a и b по-прежнему указывают на тот же список, который был изменен на месте.
Разрешение имен, игнорирующее область видимости класса (ч.1)

Области, вложенные внутри определения класса, игнорируют имена, связанные на уровне класса.
Разрешение имен, игнорирующее область видимости класса (ч.2)

Выражение генератора имеет свою собственную область видимости.

Начиная с Python 3.X, понимание списков также имеет свою собственную область.
Округляет, как банкир (ч.1)

Давайте реализуем наивную функцию для получения среднего элемента списка

Это не ошибка точности с плавающей запятой, на самом деле, такое поведение является преднамеренным. Начиная с Python 3.0, round() использует округление банкира, где дроби .5 округляются до ближайшего четного числа:
Синтаксис

Синтаксис представления списков обеспечивает простой и надежный способ для создания новых списков из уже существующих. Допустим, нам нужен новый список, в котором каждый элемент старого списка будет умножен на 3. При помощи цикла for мы можем это сделать
Enum перечисления

Этот класс можно назвать удобным способом инкапсуляции списка констант, чтобы они не были разбросаны по всему коду без структуры.
Округляет, как банкир (ч.2)

Это рекомендуемый способ округления дробей .5, как описано в IEEE 754. Однако в школе большую часть времени преподают другой способ (округление от нуля), поэтому округление банкира, вероятно, не так хорошо известно. Кроме того, некоторые из самых популярных языков программирования (например: JavaScript, Java, C / C ++, Ruby, Rust) также не используют банковское округление.

Следовательно, это все еще довольно специфично для Python и может привести к путанице при округлении дробей.

Смотрите Документы round() или этот поток stackoverflow для получения дополнительной информации.

Обратите внимание, что get_middle([1]) было возвращено только 1, потому что индекс был round(0.5) - 1 = 0 - 1 = -1, возвращая последний элемент в списке.
Иголки в стоге сена (ч.1)

Для 1 правильным утверждением для ожидаемого поведения является x, y = (0, 1) if True else (None, None).