Python Nation🐍🇺🇦
2.84K subscribers
237 photos
2 files
158 links
Канал для всіх, хто вивчає Python: поради, приклади коду, бібліотеки, лайфхаки та актуальні новин👨‍💻🐍

По всім питанням👉 @giorg_jr

❗️Канал регулярно очищується від неактивних підписників❗️
Download Telegram
Правильный импорт

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

Импорт ненужных библиотек приведет к замедлению скорости запуска программы.
dims в качестве переменных

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

firstdim = array[1]

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

Итеративная распаковка значений может быть довольно трудоёмкой и времязатратной. К счастью, у Python есть несколько замечательных способов распаковки списков! Одним из них является звездочка *, заполняющая не определённые значения и добавляющая их к списку под именем переменной.
Python позволяет вам возвращать из функции несколько значений.

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

Еще несколько значений можно возвращать, перечислив их через запятую после команды return.
Ключевое слово nonlocal

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

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

Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости.
Все знают как делать, привычный для нас перебор, к примеру от 0 до 5

Но иногда нам нужно перебрать последовательность в обратном порядке и для этого можно использовать функцию reversed как на примере выше.

#reversed
Практически в любой программе необходимо проверять, являются ли переменные / списки / словари / ... пустыми. На этих проверках тоже можно немножко сэкономить.

Не следует явно указывать == True или is True в условии if, достаточно указать имя переменной, которая проверяется. Это экономит ресурсы, которые использует «магическая» функция __eq__ для сравнения значений.
Программист на Python может узнать, какие именно переменные определенны в данный момент в интерпретаторе. Переменные можно разделить на локальные и глобальные. Глобальные определены на верхнем уровне кода снаружи функций и классов. Локальные переменные наоборот определены внутри своих зон видимости, ограниченных классами и функциями.

Функция globals() всегда возвращает словарь глобальных переменных.

#globals()
Функция locals() возвращает словарь только локальных переменных.
Обратите внимание, что переменная y в locals() имеет другое значение, нежели чем в globals(). Это две разные переменные из разных областей, но внутри функции приоритет имеет локальная y.

Как вы уже могли заметить в список переменных входят не только простые переменные, которые вы определяете через знак присваивания, но и функции, классы, а также импортированные модули.
Друзья, у Python комьюнити 2 праздника:
1️⃣ Вышел Python 3.10. Вы уже обновили версию Python?

2️⃣ Впервые за более чем 20 лет язык программирования Python занял 1-е место в рейтинге TIOBE! 🎉 Первенство Java и C закончилось. Python, который начинался как простой язык сценариев как альтернатива Perl, стал зрелым. Простота обучения, огромное количество библиотек и широкое использование, во всех областях, сделали его самым популярным языком программирования на сегодняшний день.Поздравляем нас и в первую очередь Гвидо ван Россума.
Вы, наверное, слышали фразу "wild import - зло". В коде это выглядит так:

from my_module import *

Ответ почему это "зло" очень простой - вы импортируете всё - то что надо и то что не надо.

Как же быть? Можно поочерёдно импортировать только нужные переменные и функции/классы, но это плохая практика если у вас много импортов. Ведь должен быть альтернативный вариант.

Он есть - это переменная __all__ .__all__ в Python - это список публичных объектов данного модуля.

Например, есть некий my_module.py, в нём очень много объектов, и не требуется давать пользоваться ими всеми. В my_module.py вы списком определяете названия объектов, которые можно импортировать:

__all__ = ["MyClass", "MyClass2"]

И тогда конструкция

from my_module import *

Импортирует только те объекты, которые вы описали в __all__.
Забудьте о range(len(коллекция)). Сделайте выбор в сторону — enumerate(коллекция).

Часто возникают ситуации, когда нужно перебрать коллекцию и отслеживать индексы элементов, к которым вы получили доступ. Для этих целей многие использует range(len(коллекция)).

Функция enumerate возвращает enumerate-объект, который хранит в себе и индексы элементов, и их значения.

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

Рассмотрите пример, в котором видна разница между range(len(коллекция)) и enumerate(коллекция).
Валидаторы данных

Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.

Модуль validators позволяет использовать уже готовые валидаторы для самых распространенных задач.

Каждая функция-валидатор возвращает True при успешной проверке и ValidationFailure при неудачной проверке.

Помимо этого, validators позволяет также работать с ipv4, ipv6, uuid, iban и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.

#validators
Среди тех кто хоть как-то сталкивался с Python, бытует мнение, что всё в Python является объектом. Отчасти это так.
Но правильным утверждением является "В Python почти все является объектом."

Строки, словари, файлы и целые числа — все это объекты. Даже функции представляют собой объекты. Но есть и исключения: ключевые слова (например in ) объектами не являются. Кроме того, имена переменных объектами не являются, но указывают на них.
Глубокое (полное) копирование

Глубокая копия создает новую и отдельную копию всего объекта или списка со своим уникальным адресом памяти. Это означает, что любые изменения, внесенные вами в новую копию объекта или списка, не будут отражаться в исходной. Этот процесс происходит следующим образом: сначала создается новый список или объект, а затем рекурсивно копируются все элементы из исходного в новый.

Короче мораль такова: оба объекта становятся полностью независимы друг от друга!)

#deepcopy()
textblob - это библиотека Python для обработки текстовых данных.
Она предоставляет простой API-интерфейс для решения общих задач обработки естественного языка (NLP), таких как тегирование части речи, извлечение именных фраз, анализ тональности, классификация, перевод и многое другое.

Перед запуском кода установите пакет:
pip3 install textblob

#textblob
uuid

В Python есть библиотека с именем UUID (универсальный уникальный идентификатор) для генерации случайного объекта длиной 128 бит. Эта библиотека генерирует уникальные идентификаторы на основе системного времени и сетевого адреса компьютера.

Объект UUID неизменяем и содержит некоторые функции для создания различных уникальных идентификаторов. UUID используется для многих целей, таких как:
- создание уникального случайного идентификатора
- MAC-адреса на основе идентификатора
- криптографических значений
- хеш-функции и тд.
Друзья, кому под силу исправить код так, чтобы он корректно работал?

Напиши в комментах, что нужно прописать вместо знаков вопросов.

Давайте узнает кто самый сильный "питонодав"😂

P.S. Последовательность ключей непринципиальна!

#исправитькод
Путь Pyhon Junior-a

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