Python | Notes
Open in Telegram
Заявки принимаются моментально! ⚡️Лучшие шпаргалки по Python! Поделиться с другом - https://t.me/+ugLTJcF7eFllMDky Менеджеры: @sorivmavb @ootrimoo @mirapoller
Show more7 068
Subscribers
No data24 hours
-77 days
-14330 days
Posts Archive
7 068
Очень часто при создании приложений возникает ситуация, когда нам нужны данные для тестирования различных функциональных возможностей.
Чтобы решить эту проблему и работать с более разнообразными и реалистичными данными, изобретательные разработчики создали библиотеку Faker, которая может генерировать все типы случайных данных.
Чтобы установить Faker мы используем pip :
pip3 install Faker
Затем мы можем очень легко начать генерировать случайные данные, создав экземпляр класса Faker.
Python | Notes7 068
Как правило, разработчики пишут регулярные выражения для обработки специфических строк. Но для таких данных как, почта или ссылка, изобретать велосипед не нужно.
Модуль
validators позволяет использовать уже готовые валидаторы для самых распространенных задач.
Каждая функция-валидатор возвращает True при успешной проверке и ValidationFailure при неудачной проверке.
Помимо этого, validators позволяет также работать с ipv4, ipv6, uuid, iban и многим другим. В итоге, имеем лаконичный и простой модуль с хорошим функционалом.
Python | Notes7 068
Метод seekable() используется для проверки того, доступен ли файл для поиска.
Он возвращает true, когда файл доступен для поиска, иначе возвращает false. Файл доступен для поиска, если он разрешает доступ к файловому потоку.
Python | Notes
7 068
Метод math.fsum() возвращает сумму всех элементов в любой итерации. Итерацией может быть кортеж, массив, список. Если итерируемый объект не является числом, он возвращает TypeError. Этот метод возвращает сумму всех значений в виде значения с плавающей запятой.
Python | Notes
7 068
Размещайте метод __init__ в самом начале
Хотя для большинства из нас это правило очевидно, но встречаются программисты, которые “прячут”
__init__ глубоко в теле класса с другими атрибутами. Располагать же его следует в самом начале класса до упоминания всех остальных методов, поскольку именно там его будут искать при чтении.
При наличии атрибутов класса метод __init__ размещается после них. Во избежание путаницы этого принципа следует последовательно придерживаться при определении всех классов проекта.
Python | Notes7 068
The Interface Segregation Principle
Принцип разделения интерфейсов. Создавайте узкоспециализированные интерфейсы и не вынуждайте клиента зависеть от неиспользуемых интерфейсов. Допустим есть класс Auto с методами комплектаций для всех автомобилей. Если мы наследуемся от интерфейса, то все методы реализованные в нем должны быть описаны в классе-потомке. В результате чего классы могут получить ненужные методы. Для решения этой проблемы мы разделяем интерфейсы.
Python | Notes
7 068
Функция getsizeof()
Модуль sys стандартной библиотеки предоставляет функцию getsizeof(). Эта функция принимает объект (объект может быть любого типа), вызывает метод
sizeof() и возвращает размер объекта в байтах, поэтому вы также можете сделать ваши объекты инспектируемыми.
Сегодня эту функцию испытаем на числах.
Python | Notes7 068
В Python есть библиотека с именем UUID (универсальный уникальный идентификатор) для генерации случайного объекта длиной 128 бит. Эта библиотека генерирует уникальные идентификаторы на основе системного времени и сетевого адреса компьютера.
Объект UUID неизменяем и содержит некоторые функции для создания различных уникальных идентификаторов. UUID используется для многих целей, таких как:
- создание уникального случайного идентификатора
- MAC-адреса на основе идентификатора
- криптографических значений
- хеш-функции и тд.
Python | Notes
7 068
issuperset
Метод issuperset() возвращает True, если множество содержит все элементы другого множества (передается как аргумент). Если нет, возвращается False. Также можно использовать оператор >=, однако он требует множеств по обе стороны. Метод issuperset может принимать любой объект.
Python | Notes
7 068
KD-деревья — это структура данных, оптимизированная для запросов ближайших соседей. Например, в наборе точек можно эффективно узнать, какие точки являются ближайшими к определенной заданной точке.
Метод KDTree() возвращает объект KDTree. Метод query() возвращает расстояние до ближайшего соседа и местоположение соседей.
Python | Notes
7 068
Модуль dis
Вы когда-нибудь задумывались, что Python делает под капотом? Со стандартным модулем библиотеки
dis вы можете легко посмотреть. Эта библиотека позволяет декомпилировать байт-код Python и изучить его.
Python | Notes7 068
Функция help
Если вы находитесь в
Python Shell или делаете отладку кода с использованием breakpoint, и хотите знать, как работает определённый объект, метод или атрибут, функция help поможет вам.
В действительности вы, скорее всего, будете обращаться за помощью к поисковой системе. Но если вы уже находитесь в Python Shell, вызов help(list.append) будет быстрее, чем поиск документации в Google.
Python | Notes7 068
Выражения генераторы
Интересное расширение Python, обобщающее list comprehension, — выражения-генераторы. Они работают совершенно аналогично list comprehension, только без создания в памяти собственно списка. Числа создаются по ходу дела, без сохранения их явным образом в списке.
Например, вместо вычисления квадратов первых 20 натуральных чисел с помощью list comprehension:
sum([x*x for x in range(20)])можно воспользоваться выражением-генератором:
sum(x*x for x in range(20))
Использование данного способа ускоряет выполнение программы.
Python | Notes7 068
Python позволяет вам возвращать из функции несколько значений.
Для этого необходимо вернуть структуру данных, содержащую эти несколько значений. Например, список количества английских слов, которые надо выучить за день.
Еще несколько значений можно возвращать, перечислив их через запятую после команды
return.
Python | Notes7 068
Ключевое слово nonlocal
Похожее по функционалу на
global, ключевое слово nonlocal позволяет обращаться к переменным из нелокальной области видимости.
Поведение nonlocal заключается в том, что интерпретатор ищет переменную в ближайшей области видимости.
Основное различие с global в том, что с помощью nonlocal нельзя получить переменные из глобальной области видимости.
Python | Notes7 068
Функция
abs() возвращает абсолютное значение заданного числа. Если это комплексное число, функция abs() возвращает его величину.
Python | Notes7 068
Объединение строк
В программном коде нередко приходится сталкиваться с конкатенацией строк при помощи знака сложения. Создание строки из списка нескольких подстрок удобнее осуществить при помощи строкового метода join
Python | Notes
7 068
Генераторы в Python
Вместо выражения return генераторы возвращают значения путем многократного применения выражения yield. При каждом новом вызове функции возвращается следующее значение итерируемой последовательности.
Генератор может быть вызван через функцию next(). При каждом вызове next() возвращается следующее значение генератора.
Python | Notes
7 068
inspect
Модуль inspect пригодится вам для использования того, что происходит за кулисами в Python. Вы так же можете вызывать его методы в них же!
Снизу пригодится метод inspect.getsource() для вывода его собственного исходного кода. Еще используется метод inspect.getmodule() для вывода модуля, в котором его утвердили.
Python | Notes
7 068
Лимит рекурсии
В Python не поддерживается хвостовая рекурсия, из-за чего зачастую возникает RecursionError во время создания рекурсивных алгоритмов. Но с помощью модуля sys можно посмотреть и даже изменить максимальную глубину рекурсии.
Однако делать это слегка опасно, так как каждый новый вызов занимает достаточно много памяти. И вообще лучше стараться использовать не рекурсию, а обычные циклы.
Python | Notes
