Telegram Web Link
Аннотации типов: Union и Optional

Ранее на канале был пост про базовые аннотации типов. Но важно знать и про такие аннотации, как Union и Optional.

При необходимости допустить использование не любых типов, а только некоторых, можно использовать аннотацию Union[T, ...] с указанием списка типов в квадратных скобках.

Для объявления опциональных переменных используется Optional[T]. Такая аннотация нужна для переменных, которые либо имеют значение определенного типа, либо равны None.

Кстати, аннотация Optional[T] эквивалентна Union[T, None].

#аннотации
Однажды ты спросишь меня, чего я жду больше: дрим-джоб или One Day Offer от Сбера. Я отвечу: «One Day Offer». И ты уйдёшь, так и не узнав, что это и есть шанс получить работу мечты.

Станьте частью команды Сбера за 1 день!

Форвард среди высокотехнологичных сервисных компаний ищет дата-сайентистов в Москве и Нижнем Новгороде. Подходит, если вы технарь уровня Middle, Senior или Lead с опытом в DS/ML больше 2 лет, который без труда кодит на Python. А если работали с рекомендательными системами — ещё лучше.

Каков порядок действий?

Посещаете 25 июня One Day Offer → проходите интервью → в тот же день получаете предложение, о котором мечтали → вместе с командой Сбера создаёте платформу, которая поможет создавать персональные рекомендации в разных сферах бизнеса.

Участвовать в One Day Offer
Заменяем часть строки

Со строками в Python работать очень удобно, так как встроенных методов для них предостаточно. Одним из методов является str.replace(), который позволяет заменять части строк.

Первым аргументом передается подстрока, которая будет изменяться в исходной строке. Вторым аргументом — то, на что будет заменяться.

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

#строки
Спасти мир, исправив баги в коде? Легко!

По всей планете вдруг внезапно пошли сильнейшие ливни. Аномалия? Баги! Создатель напутал значения в коде, на котором написан наш мир, и теперь нам грозит утонуть в потоках воды с неба. Все исправить смогут только разработчики.

Помогите Создателю и решите три задачи на языке Python: выбирайте неправильные части кода и отмечайте правильный ответ из предложенных. Вся надежда на вас, поторопитесь!

https://vk.cc/ceD1h5
Создаем пакеты

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

При импорте вида from package import * будет подключены либо все модули и объекты модуля __init__.py, либо то, что находится в переменной __all__ в том же модуле __init__.py — подробнее про эту переменную было в посте ранее.

Также примечателен файл init.py, который раньше был обязателен для создания пакетов. С версии Python 3.3 его необходимость пропала. Однако его функциональность на этом не заканчиваются.

#модули #пакеты
Завершение программы

Функция exit создана для удобства работы в интерактивном режиме, однако не рекомендуется использовать её внутри скриптов.

По факту функция просто поднимают исключение SystemExit. А при попытке вызова без скобок напишут подсказку о правильном способе выхода из интерпретатора.
  
Использовать sys.exit() стоит потому, что этот метод лежит в стандартном модуле и всегда там доступен. Также это довольно явный способ завершения программы.

#sys #exit
ИММИГРАЦИЯ В США С ЛИЦЕНЗИРОВАННЫМ ИММИГРАЦИОННЫМ АДВОКАТОМ

Всем привет!
Меня зовут Станислав Шамаев 🙋🏼‍♂️, я лицензированный бизнес-иммиграционный адвокат. Также являюсь основателем юридической компании №1 в Майами.

Я специализируюсь на визах талантов ЕВ-1А и О-1 для IT, Digital и специалистов в сфере кибербезопасности в разных сферах и проведу бесплатный СТРИМ на моем Telegram-канале ‘’Одной ногой в США’’ уже в ПЯТНИЦУ 1 июля 2022 года с разбором 3-х ключевых критериев для получения визы:

▪️которые с легкостью могут закрыть большинство специалистов в сфере IT, Digital и кибербезопасности - статьи, вклад в индустрию, конкурентная зп на рынке .

▪️ А также обсудим, что может быть вкладом в профессиональную индустрию и как его упаковать в критерий визы талантов?
Расскажу на примере реальных кейсов моих клиентов!

▪️Список самые актуальные х профессий на рынке сегодня, которые ТРЕБУЮТСЯ в США немедленно! 🇺🇸.

🔥 В конце СТРИМА отвечу на все вопросы зрителей, А также в подарок каждый зритель получит гайд по критериям виз "Простая Иммиграция" БЕСПЛАТНО.

Но и это еще не все! Каждый участник стрима получит от меня персонализированный разбор его иммиграционного кейса в течение 48 часов и БЕСПЛАТНЫЙ подбор визовой программы.

СТРИМ ПО ВИЗЕ ТАЛАНТОВ ДЛЯ IT-СПЕЦИАЛИСТОВ И СПЕЦИАЛИСТОВ В СФЕРЕ КИБЕРБЕЗОПАСНОСТИ ПРОЙДЕТ :
В 19.00 по Европе
В 20.00 по Москве
В 13.00 по Майами

Где? 👉 На канале ‘Одной ногой в США’’

Как попасть на стрим? 👉 ПОДПИШИТЕСЬ на Telegram-канале "Одной ногой в США'' , где вы сможете найти все подробности проведения мероприятия.

До встречи на стриме!
Статические методы

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

Статический метод не принимает ни объект (self), ни класс (cls) в аргументах. То есть такие методы не могут модифицировать ни объект, ни сам класс. 

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

Но так делать не принято, поэтому чаще всего staticmethod используют в качестве декоратора при написании методов прямо в классе.

#staticmethod
Находим наименьшие и наибольшие

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

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

С помощью методов nsmallest и nlargest можно получить наименьшие и наибольшие элементы в списке.

Первым аргументов передается, сколько элементов нужно взять, вторым — список.

#heap
Получаем информацию о памяти на диске

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

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

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

#shutil
Списковые включения

На основе итерируемых объектов можно удобно и без циклов строить списки в одну строчку — такой синтаксис называется списковыми включениями.

Сейчас подробнее разберем именно списки, но по такому же принципу можно создавать и словари.

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

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

#списки #словари
Защищаем исходный код обфускацией

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

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

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

В Python есть отличная библиотека pyarmor, предназначенная именно для этого. Пример использования этого пакета в терминале представлен выше на картинке.

#pyarmor
Превращаем текст в речь

На Python есть классная библиотека gTTS (Google Text-to-Speech), которая взаимодействует с Google Translate's text-to-speech API и позволяет делать из текста аудиофайлы. Пакет как всегда устанавливается через pip.

При создании экземпляра класса gTTS мы передаем исходный текст первым аргументом. Также можно передать опциональный аргумент, отвечающий за язык, который по умолчанию является английским.

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

#gtts
Используйте dict.get() вместо dict[]

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

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

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

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

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

#словари
Сортировка списков

В Python есть два встроенных способа для сортировки списков — функция sorted() и метод list.sort(). Результат в обоих случаях одинаков, но всё же есть нюансы.

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

Метод sort() в свою очередь применяется к списку, изменяет его непосредственно и ничего не возвращает.

#списки
Рынок облаков в России за год вырос на 15.100.000.000 рублей

Цифра большая, но динамика показывает, что в ближайшие 3-5 лет внедрение облачных технологий будет иметь ещё более быстрые темпы – продукт полезен и удобен для IT.

Поэтому рекомендуем подписаться на канал Cloud, чтобы не пропускать полезные материалы, подборки новостей, а также бесплатные практические вебинары, которые будут полезны для развития системы умного бизнеса!
Разница между == и is

Многие разработчики не понимают разницу этих двух операторов сравнения. Из-за неправильного использования == и is в приложениях могут возникнуть странные ошибки.

Оператор == проверяет равенство значений двух объектов. А оператор is проверяет идентичность самих объектов. Его используют, чтобы удостовериться, что переменные указывают на один и тот же объект в памяти.

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

#тонкости
Форматируем строку для URL-адреса

Для начала стоит вспомнить, что слаг (slug) — это уникальная строка-идентификатор, понятная человеку и содержащая только "безопасные" символы: латинские символы в нижнем регистре, цифры и дефис.

Чаще всего такое понятие можно встретить в контексте URL-адресов. Например, можно формировать слаг из названия какой-нибудь статьи и вставлять его в ссылку, чтобы людям было понятно, куда они переходят.

Выше в коде мы написали простую функцию, где использовали методы lower() для приведения в нижний регистр и strip() для удаления пробелов слева и справа.

Также для удаления некоторых символов и замены на знак дефиса были использованы регулярные выражения и встроенный пакет re для работы с ними.

#строки #re
Простой, но мощный веб-фреймворк

Самым популярным фреймворком для разработки серверной части на Python является Flask. К слову, он обгоняет даже Django по звездам на GitHub.

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

Для создания минимального рабочего приложения достаточно кода выше. После запуска такого скрипта можете перейти в браузере по адресу http://localhost:5000/ и посмотреть результат.

#модули
Функции только с позиционными параметрами

Если с помощью inspect посмотреть на то, как объявлена встроенная функция float, то увидим, что есть входный параметр x и еще какой-то непонятый слэш.

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

Такое поведение как раз задает тот слэш. Параметры, записанные до него, можно передать только как позиционные. После него – как угодно, все будет работать стандартно.

#функции
2025/02/23 11:54:41
Back to Top
HTML Embed Code: