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

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

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

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

РКН: clck.ru/3G6pBb
加入频道
Открываем локально поисковую строку Google

Порой мы так глубоко погружаемся в написание кода, что нам неохота открывать браузер для поиска нужной информации. Установив потрясающую библиотеку google, можно делать запрос в поисковик прямо в консоли.
Загрузка материалов из Instagram

Всем нам часто попадаются хорошие посты в Instagram, которые хотелось бы сохранить на своем устройстве, чтобы иметь офлайн-доступ. Это можно сделать при помощи библиотеки instaloader.
Выводим аудио дорожку из видео

Бывает так, что у нас есть mp4-файл, но нам нужна только звуковая дорожка из него. Скажем, чтобы сделать другое видео с таким же звуковым сопровождением. Эта проблема решается установкой библиотеки moviepy.
Давайте переделаем (ч.3)

Третий фрагмент также был следствием искажения имени. Имя __variable в инструкции return __variable было искажено до _A__variable, которое также является именем переменной, объявленной нами во внешней области видимости.

Кроме того, если искаженное имя длиннее 255 символов, произойдет усечение.
Пропуск строк

Некоторые незападные символы выглядят идентично буквам английского алфавита, но интерпретатор считает их разными.

Встроенная ord() функция возвращает кодовую точку символа в Юникоде, а различные кодовые позиции кириллицы 'e' и латиницы 'e' оправдывают поведение нашего примера примера.
Телепортация

Обратите внимание, что массив numpy, созданный в energy_send функции, не возвращается, так что пространство памяти свободно для перераспределения.

numpy.empty() возвращает следующий свободный слот памяти без его повторной инициализации. Эта область памяти просто оказывается той же, которая была только что освобождена (обычно, но не всегда).
Ну, что-то здесь не так...

Почему в первом выводе у нас получилось 10, а не 100?

Это потому что мы смешали табуляцию и пробелы. Символ, непосредственно предшествующий возвращению, является "табуляцией", и в другом месте примера код имеет отступ, кратный "4 пробелам".

"tab" в последней строке square функции заменяется восемью пробелами, и она попадает в цикл.

Зато Python 3 достаточно любезен, чтобы автоматически выдавать ошибку в таких случаях.
+= быстрее

Почему +- быстрее?

+= быстрее, чем + в объединениях более двух строк, потому что первая строка (например, s1 для s1 += s2 + s3) не уничтожается при вычислении полной строки.
Давайте создадим гигантскую строку!

Для создании длинной строки не используйте +. В Python str является неизменяемым, поэтому левая и правая строки должны копироваться в новую строку для каждой пары конкатенаций. Если вы объедините четыре строки длиной 10, вы будете копировать (10+10) + ((10+10)+10) + (((10+10)+10)+10) = 90 символы вместо всего лишь 40 символов. Ситуация ухудшается квадратично по мере увеличения количества и размера строки

Поэтому рекомендуется использовать синтаксис .format. or % (однако они работают немного медленнее, чем + для очень коротких строк).

Или лучше, если у вас уже есть содержимое, доступное в виде итеративного объекта, тогда используйте ''.join(iterable_object) который намного быстрее.
Замедление dict поиска

CPython имеет общую функцию поиска по словарю, которая обрабатывает все типы ключей (str, int, любой объект ...), и специализированную для общего случая словарей, состоящих только из str ключей.

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

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

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

CPython способен повторно использовать один и тот же объект "keys" в нескольких словарях. Это было добавлено в PEP 412 с целью уменьшить использование памяти, особенно в словарях экземпляров, где ключи (атрибуты экземпляра), как правило, являются общими для всех экземпляров.

Эта оптимизация полностью выполняется, например, для словарей, но она отключается, если нарушаются определенные допущения.
🗓 Время учить Python. 5 июля старт Подготовительного курса!

✔️Упражняемся в браузерном тренажере — учимся понимать и писать код на Python.
✔️Погружаемся в реальный продакшен — создаем конвертер валют вместе с наставником.
✔️ Размещаем изменения на GitHub — получаем основу для своего первого пет-проекта.

🐍 База по Python за 14 дней. На практике. За 990 рублей.
Раздувающийся экземпляр dict (ч.2)

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

Кроме того, если размеры ключей словаря были изменены (из-за вставки новых ключей), они остаются общими только в том случае, если они используются точно одним словарем (это позволяет добавлять множество атрибутов в init самого первого созданного экземпляра, не вызывая "общего доступа"). Если при изменении размера существует несколько экземпляров, совместное использование ключей отключается для всех будущих экземпляров одного и того же класса: CPython не может определить, используют ли ваши экземпляры тот же набор атрибутов, и решает отказаться от попыток совместного использования своих ключей.
Изменение ссылок

При постоянной работе с URL часто возникает необходимость сократить длинную ссылку. Для этого есть специальные онлайн-сервисы типа bit.ly, которые сокращают URL до 50 символов. Мы можем создать собственный инструмент для сокращения ссылок при помощи библиотеки pyshorteners.
Как «включают» долгосрочную мотивацию в IT

Для развития компании и успеха сотрудника необходима рабочая система мотивации.

IT-компании развивают LTI — долгосрочные проекты, основанные на показателях стоимости компании. Лучшими из них становятся инициативы с прозрачной формулой и удобными системами вознаграждений.

Важна и комфортная среда, чтобы сотрудники не выгорали: возможности для обучения, удобный офис и поддержка на удаленке.

Чтобы подробнее узнать о том, как компании мотивируют сотрудников и создают среду для высоких результатов — смотрите интервью Forbes с HR-директором Авито Ольгой Ким.
Проверка на оригинальность

Один из важнейших факторов работы с текстовым контентом — плагиат. Не всегда возможно проверить каждый файл вручную, особенно, если у вас целый пакет файлов. Тут пригодится инструмент для выявления плагиата. Мы можем создать собственный детектор при помощи библиотеки difflib. Ее можно использовать для поиска сходства между двумя или несколькими файлами на одном устройстве.
Локальный переводчик

Мы живем в многоязычном мире. А поскольку каждый человек может выучить не так уж много языков, то, чтобы понимать друг друга, нам нужны переводчики. Переводчиком может быть и программа. Для создания таких программ в Python есть специальная библиотека — Translator.
Высшее образование онлайн? Так бывает? Да!


РАНХиГС и Skillbox открыли набор на программу Data Science & Machine Learning. После обучения вы получите диплом государственного образца.

Чем занимаются аналитики данных:


Специалисты Data Science & Machine Learning находят закономерности в данных и делают выводы. Например, когда в экономике может случиться дефолт. А также создают алгоритмы искусственного интеллекта для нейросетей, голосовых помощников, программ распознавания лиц и чат-ботов.

За время обучения вы:

— Научитесь работать с искусственным интеллектом и программировать на Python.

— Подтянете английский, повторите основы математики и статистики для аналитики данных.

— Освоите soft skills для работы в IT.

— Соберёте портфолио из более чем 10 работ и пройдёте стажировки.

Успейте подать заявку по ссылке: https://goo.su/ws3X

Реклама. ЧОУ ДПО «Образовательные технологии «Скилбокс (Коробка навыков)», ИНН: 9704088880
Метод remove() для удаления элемента из списка

В этом списке есть строки и целые числа. Есть повторяющиеся элементы: строка «Mars» и число 12.
Второстепенные (ч.1)

Учитывая, что a это число, ++a и --a оба являются допустимыми операторами Python, но ведут себя по-другому по сравнению с аналогичными операторами в таких языках, как C, C ++ или Java.

В грамматике Python нет ++ оператора. На самом деле это два + оператора.

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

В этом потоке StackOverflow обсуждается обоснование отсутствия операторов увеличения и уменьшения в Python.
Второстепенные (ч.2)

Вы, должно быть, знаете о операторе Walrus в Python. Но слышали ли вы когда-нибудь о операторе space-invader?

Он используется в качестве альтернативного оператора увеличения вместе с другим

Эта шутка взята из твита Рэймонда Хеттингера. Оператор space invader на самом деле просто неправильно отформатирован a -= (-1). Что эквивалентно a = a - (- 1). Аналогично для a += (+ 1) случая.