Работаем с файловыми путями
В стандартной библиотеке есть максимально удобный пакет
Для представления пути к файлу есть класс
Но самой классной фичей является замена
Итого, пакет
#pathlib
В стандартной библиотеке есть максимально удобный пакет
pathlib для простой работы с файловыми путями. Для представления пути к файлу есть класс
Path, с объектами которого уже можно производить операции. Например, методы exists() и is_dir() проверяют, существует ли файл и является ли он директорией. Но самой классной фичей является замена
os.path.join() на более удобный и элегантный вариант с использованием слэшей, как показано на картинке. Итого, пакет
pathlib может стать частичной заменой os в некоторых случаях при работе с файловыми путями. #pathlib
👎1
Находим наименьшие и наибольшие
В стандартной библиотеке есть модуль
Особенности и пользу этой структуры данных пока что разбирать не будем, но посмотрим на два интересных метода в этом модуле.
С помощью методов
Первым аргументов передается, сколько элементов нужно взять, вторым — список.
#heap
В стандартной библиотеке есть модуль
heapq, который, как можно понять по названию, реализует структуру данных куча.Особенности и пользу этой структуры данных пока что разбирать не будем, но посмотрим на два интересных метода в этом модуле.
С помощью методов
nsmallest и nlargest можно получить наименьшие и наибольшие элементы в списке. Первым аргументов передается, сколько элементов нужно взять, вторым — список.
#heap
👎1
Web2py
Web2py — это бесплатный фреймворк с открытым исходным кодом, предназначенный для быстрой разработки безопасных веб-приложений, основанных на базах данных. Он написан на Python и программируется с использованием того же языка.
#python
Web2py — это бесплатный фреймворк с открытым исходным кодом, предназначенный для быстрой разработки безопасных веб-приложений, основанных на базах данных. Он написан на Python и программируется с использованием того же языка.
#python
❤1👎1
PyQtGraph
PyQtGraph — это библиотека Python для создания интерактивных 2D и 3D графиков, а также элементов графического интерфейса (GUI). Она основана на PyQt (или PySide) и NumPy, что делает ее мощным и универсальным инструментом для научных, инженерных и исследовательских задач.
#python
PyQtGraph — это библиотека Python для создания интерактивных 2D и 3D графиков, а также элементов графического интерфейса (GUI). Она основана на PyQt (или PySide) и NumPy, что делает ее мощным и универсальным инструментом для научных, инженерных и исследовательских задач.
#python
❤3👎1
Проверка отношения классов
Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции
Данные функции зачастую применяются в ООП.
#isinstance #issubclass
Для того, чтобы проверить отношения двух классов или экземпляров (является ли класс классом наследником), есть две простые встроенные функции
isinstance(object, classinfo) и issubclass(class, classinfo).instance - возвращает True, если объект является экземпляром класса либо экземпляром подкласса данного класса.issubclass — проверяет является ли класс наследником другого класса.Данные функции зачастую применяются в ООП.
#isinstance #issubclass
👎3
Метод setdefault()
Метод
Метод
— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.
Если ключ присутствует в словаре, метод возвращает значение, связанное с этим ключом. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.
#python
Метод
setdefault() в Python возвращает значение по указанному ключу из словаря. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.Метод
setdefault() имеет два параметра:— Ключ, по которому необходимо получить значение.
— Значение по умолчанию, которое будет добавлено в словарь, если ключ отсутствует.
Если ключ присутствует в словаре, метод возвращает значение, связанное с этим ключом. Если ключ отсутствует в словаре, метод добавляет ключ в словарь со значением по умолчанию, а затем возвращает это значение.
#python
❤2👎2
Получаем список переменных
Функция
С помощью похожей функции
Еще обратите внимание на результат второй функции: там много разных переменных, которые мы явно не объявляли — про некоторые из них скоро расскажем.
#переменные
Функция
locals() возвращает словарь переменных из текущего пространства имён. Ключи словаря — названия переменных, а значения — это их значения.С помощью похожей функции
globals() можно получить все переменные конкретного модуля в таком же виде.Еще обратите внимание на результат второй функции: там много разных переменных, которые мы явно не объявляли — про некоторые из них скоро расскажем.
#переменные
👍7👎1
Декоратор override
Это может быть полезно для:
— Повышения читабельности кода, так как сразу видно, какие методы переопределены.
— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.
— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.
#python #decorators
@override используется для переопределения методов в классах-наследниках. Он позволяет указать, что метод в подклассе переопределяет метод базового класса.Это может быть полезно для:
— Повышения читабельности кода, так как сразу видно, какие методы переопределены.
— Выявления ошибок: если имя метода в дочернем классе не совпадает с именем в родительском, будет выдана ошибка.
— Проверки типов аргументов: декоратор гарантирует, что типы аргументов совпадают с базовым методом.
#python #decorators
👍2❤1👎1
Упаковка параметров с помощью urlencode
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция
Довольно часто приходится работать с разнообразными API и совершать get-запросы с передачей множества параметров. Чаще всего составление запроса в коде выглядит примерно так:
url = 'https://example.com?item={}&size={}&color={}&amount={}'.format('t-shirt', 'M', 'white', 5)Смотрится не слишком презентабельно, однако есть слегка более длинный, но значительно улучающий читаемость кода вариант – функция
urlencode из из модуля urllib.❤1👍1👎1
Работаем с буфером обмена
Здесь всё просто: есть пакет
В этом пакете есть две основные функции —
Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
#python #pyperclip
Здесь всё просто: есть пакет
pyperclip, который позволяют отправлять текст в буфер обмена вашего компьютера и получать его оттуда.В этом пакете есть две основные функции —
copy() и paste(), по названию которых понятно их предназначения.Таким образом, можно прямо через код копировать вывод программы в буфер обмена вместо того, чтобы делать это вручную.
#python #pyperclip
👎1🔥1
Поверхностное копирование
Копирование объектов может быть «поверхностное» (shallow) или «глубокое» (deep). Различия между ними заключаются в том, как обрабатываются вложенные объекты.
При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.
#python
Копирование объектов может быть «поверхностное» (shallow) или «глубокое» (deep). Различия между ними заключаются в том, как обрабатываются вложенные объекты.
При поверхностном копировании создается новый объект, но его внутренние элементы (если они тоже являются объектами) остаются ссылками на те же объекты, что и в оригинале. Другими словами, копируются только ссылки на объекты, но не сами объекты.
#python
👎1🔥1
Паттерн проектирования Singleton
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
В примере мы проверяем, есть ли значение у атрибута
То есть при вызове конструктора класса
#классы #паттерны
Одиночка или же синглтон – это паттерн проектирования, описывающий объект, у которого имеется один единственный экземпляр.
Метод
__new__ вызывается для создания экземпляра класса, перед вызовом __init__. На вход первым аргументом метод принимает сам класс, а возвращать должен уже экземпляр (даже можно экземпляр и другого класса).В примере мы проверяем, есть ли значение у атрибута
instance. Если нет, то присваиваем атрибуту экземпляр этого же класса. А если уже экземпляр создан, то просто его возвращаем.То есть при вызове конструктора класса
Singleton, будет возвращаться один и тот же объект из памяти.#классы #паттерны
👎4
Генераторы
Функции-генераторы выглядят как и обычные, но вместо
Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции
Если генератору больше нечего возвращать, то будет вызвано исключение
#генераторы
Функции-генераторы выглядят как и обычные, но вместо
return содержат выражения с ключевым словом yield для последовательного генерирования значений.Вызов подобной функции вернёт не значение, а объект генератора. Далее из этого объекта можно получать значения, например, с помощью функции
next или циклом for.Если генератору больше нечего возвращать, то будет вызвано исключение
StopIteration. В целом, генератор — это особый, более изящный случай итератора.#генераторы
👍2👎1
🌐 Копирование веб-содержимого в Python с библиотекой pywebcopy
Библиотека
Пример кода:
В данном примере используется функция
Библиотека💻
#python #pywebcopy
Библиотека
pywebcopy облегчает автоматизацию процесса загрузки веб-содержимого, что может быть полезным при создании веб-скраперов, загрузчиков или других приложений, требующих копирования данных из Интернета.Пример кода:
from pywebcopy import save_webpage
url = 'https://www.example.com'
target_folder = 'path/to/folder'
save_webpage(url, target_folder)
В данном примере используется функция
save_webpage для копирования веб-содержимого указанной веб-страницы (url) в указанную целевую папку (target_folder).Библиотека
pywebcopy предоставляет простой и удобный способ копирования веб-содержимого прямо из Python. Она может быть полезна при создании скриптов для загрузки данных с веб-страниц, автоматизации сбора информации или создании зеркал сайтов. #python #pywebcopy
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2👎1
Асинхронно скачиваем файлы
Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл
Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.
Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета
Далее метод
Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.
#python #threading
Имея список ссылок на картинки, которые нужно скачать, мы можем это сделать используя простой цикл
for, тем самым скачав их последовательно одна за одной. Но в таких ситуациях как эта (скачивание огромного количества небольших файлов) распараллеливание задачи существенно ускорит процесс.
Для этого воспользуемся функцией ThreadPoolExecutor из стандартного пакета
concurrent.futures. Она позволяет запустить нашу функцию, в нескольких екземплярах в параллельных потоках. В конструкторе необходимо указать максимальное количество потоков, которые будут одновременно запущены. Далее метод
.map(download, urls) создает екземпляры нашей функции для скачивания файла, и раскидывает в них элементы списка urls. Но будьте внимательны: так как скачивание файла — это IO-операция, такой метод не ускоряет вычисления кода. Он лишь позволяет запустить скачивание следующего файла, не дождавшись пока скачается предыдущий.
#python #threading