Just Python
10.1K subscribers
4.48K photos
12 videos
4.47K links
🐍Простое изучение Python.

Ссылка: @Portal_v_IT

Сотрудничество: @oleginc, @tatiana_inc

Канал на бирже: telega.in/c/justpython_it

РКН: clck.ru/3MnbSc
Download Telegram
Давайте создадим гигантскую строку!

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

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

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

#theory // Just Python & Max
Замедление dict поиска

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

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

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

#theory // Just Python & Max
Раздувающийся экземпляр dict (ч.1)

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

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

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

#theory // Just Python & Max
Раздувающийся экземпляр dict (ч.2)

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

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

#theory // Just Python & Max
This media is not supported in your browser
VIEW IN TELEGRAM
Нейросети уже заменяют носителей языка.

В Telegram быстро набирает популярность ИИ-девушка Chatty, с которой можно голосом практиковать живой разговорный английский и ещё 12 языков на основе новейших моделей искусственного интеллекта. Попробовать можно бесплатно.

🇬🇧 Английский: @ChattyTutorBot
🇩🇪 Немецкий: @ChattyGermanBot
🇪🇸 Испанский: @ChattySpanishBot
🇫🇷 Французский: @ChattyFrenchBot
🇮🇹 Итальянский: @ChattyItalianBot
🇵🇹 Португальский: @ChattyPortugueseBot
🇨🇳 Китайский: @ChattyChineseBot
🇯🇵 Японский: @ChattyJapaneseBot
🇰🇷 Корейский: @ChattyKoreanBot
🇸🇦 Арабский: @ChattyArabicBot
🇹🇷 Турецкий: @ChattyTurkishBot
🇷🇺 Русский: @ChattyRussianBot
🇵🇱 Польский: @ChattyPolandBot
Изменение ссылок

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

#theory // Just Python & Max
Проверка на оригинальность

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

#theory // Just Python & Max
Локальный переводчик

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

#theory // Just Python & Max
Метод remove() для удаления элемента из списка

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

#theory // Just Python & Max
Второстепенные (ч.1)

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

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

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

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

#theory // Just Python & Max
Освойте нейросети для контента за 3 дня

ИИ это не про замену людей — это про усиление ваших умений и делегирование рутины. 80% контента уже делается с помощью ИИ и базовые навыки необходимы всем, кто работает с созданием контента.

Регистрируйтесь на бесплатный мини-курс, где вы получите готовое портфолио и научитесь:
— Писать продающие посты без «ИИ‑шаблонов»;
— Делать стильные визуалы для брендов и соцсетей;
— Проводить нейрофотосессии с реальными или вымышленными моделями;
— Готовить презентации, креативные арты и постеры.

Переходите по ссылке, чтобы получить доступ и бонусные материалы.

Реклама. Информация о рекламодателе по ссылкам в посте.
Второстепенные (ч.2)

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

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

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

#theory // Just Python & Max
Оператор обратной импликации.

В Python есть недокументированный оператор обратной импликации.

Если вы замените False и True на 0 и 1 и выполните математические вычисления, таблица истинности эквивалентна оператору обратной импликации.

#theory // Just Python & Max
Вы запустили сайт, он работает. Как быстро вы узнаете, если он упадёт?

Если сайт недоступен, он не только не приносит новых клиентов, но и теряет позиции в поисковиках.
Причины бывают разные: не оплачен хостинг, DDoS, домен кончился и пр.

Чтобы оперативно узнавать о проблемах с сайтом, нужен мониторинг. И это необязательно что-то сложное.

Отправьте ссылку на ваш сайт Telegram-боту @daily_site_monitor_bot и нажмите единственную кнопку. Теперь он будет проверять доступность вашего сайта каждые 5 минут и сразу уведомит при возникновении проблемы. Также бот заранее напомнит продлить домен и SSL-сертификат.

Мониторинг 1 сайта — бесплатно.
Оператор @

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

Оператор @ был добавлен в Python 3.5 с учетом интересов научного сообщества. Любой объект может перегрузить matmul магический метод, чтобы определить поведение для этого оператора.

#theory // Just Python & Max
Сколько может хранить переменных функция?

Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)

#theory // Just Python & Max
f-string

Начиная с Python 3.8, вы можете использовать типичный синтаксис f-string, например f'{some_var=}, для быстрой отладки

#theory // Just Python & Max
Сколько может хранить переменных функция?

Python использует 2 байта для хранения локальных переменных в функциях. Теоретически это означает, что в функции может быть определено только 65536 переменных. Однако в python встроено удобное решение, которое можно использовать для хранения более 2 ^ 16 имен переменных. Следующий код демонстрирует, что происходит в стеке, когда определено более 65536 локальных переменных (Внимание: этот код печатает около 2 ^ 18 строк текста, так что будьте готовы!)

#theory // Just Python & Max