Python tricks | Хитрости Питона
5.67K subscribers
2.21K photos
26 videos
1 file
2.52K links
Здесь вы найдете лучшие практики и приёмы, которые используют опытные программисты.

Сотрудничество: @SIeep_Token

Мы на платформе: https://telegram.me/python_tricks

Ссылка на канал: https://t.me/+QayZf6ccsQllZTYy
Download Telegram
Подсчёт слов в строке

Для подсчёта слов в строке можно использовать методы split() и len()

split() - это встроенный в Python метод, который разделяет слова внутри строки с помощью определенного разделителя и возвращает массив строк.

len() также является встроенным методом Python, который возвращает количество строк в массиве или подсчитывает длину элементов в объекте. Этот метод принимает только один параметр: строку, байты, список, объект, набор или коллекцию.
Что выведет код?
Anonymous Quiz
23%
27
63%
6
9%
5
5%
10
Может ли такое быть?
Anonymous Quiz
45%
Да
43%
Нет
11%
Не знаю
Повторение элемента в списке

Чтобы найти уникальные элементы списка, вы можете воспользоваться набором в Python или использовать цикл for и перебирать, чтобы проверить, является ли элемент уникальным или нет.

Список в Python – это упорядоченный набор элементов, с разрешенными дубликатами.

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

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

Атрибут slots позволяет объявлять элементы данных (например, свойства) и запрещать создание словаря dict и weakref (если явно не объявлено в slots или не доступно в родительском элементе).

Пространство, сэкономленное от НЕ использования dict, может быть значительным! Скорость поиска атрибутов также может быть значительно увеличена.

Наличие магического атрибута slots делает несколько вещей. Во-первых, он ограничивает допустимый набор имен атрибутов объекта только перечисленными именами. Во-вторых, поскольку атрибуты теперь фиксированы, больше нет необходимости хранить атрибуты в словаре экземпляра, поэтому атрибут dict удаляется (если только базовый класс уже не имеет его; он также может быть добавлен обратно подклассом, который не имеет slots).

При использовании атрибута slots атрибуты хранятся в заранее определенных местах в массиве. 
Создание внутренних функций Python

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

В нашем коде мы определяем inner_func() внутри outer_func() для печати Hello, World! сообщение на экран. Для этого мы вызываем inner_func() в последней строке outer_func(). Это самый быстрый способ написать внутреннюю функцию на Python.
Каким будет последний элемент?
Anonymous Quiz
27%
100
55%
81
13%
None
5%
0
Функция setattr()

Функция setattr() устанавливает значение атрибута указанного объекта по его имени.

Это аналог функции getattr(). Аргументами являются объект object, строка с именем name атрибута и произвольное значение value устанавливаемого атрибута.

Имя name должно быть именем существующего атрибута или будет создан новый атрибут. Функция присвоит значение атрибуту, если объект позволяет это. Например setattr(x, 'foobar', 123), эквивалентно x.foobar = 123

-Для возвращения атрибута используется getattr().
-Для удаления атрибута используется delattr().
-Для проверки существования атрибута используется hasattr().
Наследование

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

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

В python производный класс может наследовать базовый класс, просто указав базу в скобках после имени производного класса.
Функция id()

Функция id() возвращает уникальный идентификатор для указанного объекта.

Все объекты в Python имеют свой уникальный идентификатор. Идентификатор присваивается объекту при его создании. Идентификатор является адресом памяти объекта и будет отличаться при каждом запуске программы.

Следует иметь в виду, что некоторые объекты могут иметь один и тот же идентификатор, например: мелкие целые от -5 до 256, True и False.
Функция abs()

Встроенная функция abs(x) в Python возвращает абсолютное значение аргумента x, который может быть целым или числом с плавающей точкой. Для комплексных чисел функция возвращает их величину. Абсолютное значение любого числового значения -x или +x — это всегда соответствующее положительное +x.
Singleton

Синглтон (singleton) - это класс, имеющий только один экземпляр. В Python есть несколько синглетов, это None, True и False.

Вкратце, цель шаблона Singleton заключаются в следующем:
• Обеспечение создания одного и только одного объекта класса
• Предоставление точки доступа для объекта, который является глобальным для программы
• Контроль одновременного доступа к ресурсам, которые являются общими
Функция exec()

Функция exec() поддерживает динамическое выполнение кода Python и принимает большие блоки кода, в отличие от eval(). Передаваемый функции код должен быть либо строкой, либо объектом кода, например сгенерированный функцией compile(). Если это строка, строка анализируется как набор операторов Python, который затем выполняется (если не возникает синтаксическая ошибка). Если это объект кода, он просто выполняется. Во всех случаях ожидается, что исполняемый код будет действительным, как ввод файла.

Во всех случаях, если globals и locals опущены, код выполняется в текущей области видимости. Если указываются глобальные переменные, это должен быть словарь (а не подкласс словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если передаются локальные переменные, то locals может быть любым отображающим объектом.