🗾 Работаем с изображениями на Python
Сегодня мы поговорим про то, как сжать изображение в Python. Вы узнаете, как уменьшить размер файла, сжимая и изменяя размер изображения с помощью библиотеки Pillow.
Сжатие изображения — это процесс уменьшения веса картинки без ухудшения ее качества. В этой статье мы расскажем, как уменьшать размер файла изображения в Python с помощью библиотеки Pillow.
Кроме того, вы можете свободно использовать код из этого руководства. Например, вы можете создать вокруг него API для пакетного уменьшения размеров изображений вместо использования стороннего API, который будет стоить вам денег.
Мы сделали код для данного урока максимально гибким.
https://pythonist.ru/kak-szhat-izobrazhenie-v-python/
@pro_python_code
Сегодня мы поговорим про то, как сжать изображение в Python. Вы узнаете, как уменьшить размер файла, сжимая и изменяя размер изображения с помощью библиотеки Pillow.
Сжатие изображения — это процесс уменьшения веса картинки без ухудшения ее качества. В этой статье мы расскажем, как уменьшать размер файла изображения в Python с помощью библиотеки Pillow.
Кроме того, вы можете свободно использовать код из этого руководства. Например, вы можете создать вокруг него API для пакетного уменьшения размеров изображений вместо использования стороннего API, который будет стоить вам денег.
Мы сделали код для данного урока максимально гибким.
https://pythonist.ru/kak-szhat-izobrazhenie-v-python/
@pro_python_code
Mouse — библиотека для контроля мыши на Python
Эта библиотека позволит вам получить полный контроль над своей мышью. Она умеет перехватывать глобальные события, регистрировать горячие клавиши, имитировать движения и щелчки мыши и многое другое.
Код: https://github.com/boppreh/mouse
@pro_python_code
Эта библиотека позволит вам получить полный контроль над своей мышью. Она умеет перехватывать глобальные события, регистрировать горячие клавиши, имитировать движения и щелчки мыши и многое другое.
Код: https://github.com/boppreh/mouse
@pro_python_code
Convert List of Lists to CSV File in Python
https://www.pythonforbeginners.com/lists/convert-list-of-lists-to-csv-file-in-python
https://www.pythonforbeginners.com/lists/convert-list-of-lists-to-csv-file-in-python
Пишем конвертер валют на Python.
Конвертер валют — это приложение, позволяющее быстро переводить одну валюту в другую по курсу. Такие инструменты массово доступны в интернете, воспользоваться ими можно бесплатно. В этой статье мы разберем, как создать конвертер валют на Python.Мы рассмотрим различные способы получения актуального курса обмена валют. Некоторые из них связаны с парсингом общедоступных веб-страниц, другие — с использованием официальных API (эти данные более надежны и пригодны для коммерческого использования).
Статья: https://uproger.com/pishem-konverter-valyut-na-python/
Код: https://www.thepythoncode.com/code/make-a-currency-converter-in-python
@pro_python_code
Конвертер валют — это приложение, позволяющее быстро переводить одну валюту в другую по курсу. Такие инструменты массово доступны в интернете, воспользоваться ими можно бесплатно. В этой статье мы разберем, как создать конвертер валют на Python.Мы рассмотрим различные способы получения актуального курса обмена валют. Некоторые из них связаны с парсингом общедоступных веб-страниц, другие — с использованием официальных API (эти данные более надежны и пригодны для коммерческого использования).
Статья: https://uproger.com/pishem-konverter-valyut-na-python/
Код: https://www.thepythoncode.com/code/make-a-currency-converter-in-python
@pro_python_code
Как подключиться к MySQL на Python | MySQL создание таблицы, добавление, удаление, вывод данных
Смотреть видео
Смотреть видео
Начало работы с Python PyAutoGUI
https://pythobyte.com/getting-started-with-python-pyautogui-adc2a5ae/
@pro_python_code
https://pythobyte.com/getting-started-with-python-pyautogui-adc2a5ae/
@pro_python_code
pythobyte.com
Начало работы с Python PyAutoGUI - pythobyte.com
Библиотека PyAutoGUI обеспечивает кросс-платформенную поддержку управления операциями мыши и клавиатуры с помощью кода для автоматизации задач.
⏱ Измерение времени выполнения кода
Часто на форумах и чатах возникают горячие споры о том, какой же вариант кода из нескольких выполняется быстрее. К счастью, в Python есть модуль timeit, который позволяет быстро замерить и сравнить производительность кода.
📎 Пример: определим, какой вариант кода быстрее:
Если в тестируемом кусочке кода вам потребуется обратиться к переменным или модулям из глобальной зоны видимости, то удобно воспользоваться параметром globals и присвоить его результаты функции globals().
⚠️ Помните, что результаты тестов могут отличаться в зависимости от вашего компьютера, ОС, версии Python, фаз луны и много еще чего. Также советуем вам не увлекаться чрезмерной оптимизацией во вред читаемости кода.
@pro_python_code
Часто на форумах и чатах возникают горячие споры о том, какой же вариант кода из нескольких выполняется быстрее. К счастью, в Python есть модуль timeit, который позволяет быстро замерить и сравнить производительность кода.
📎 Пример: определим, какой вариант кода быстрее:
>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.23387694358825684
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.20793890953063965
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.2012779712677002
Оказалось, что третий.Если в тестируемом кусочке кода вам потребуется обратиться к переменным или модулям из глобальной зоны видимости, то удобно воспользоваться параметром globals и присвоить его результаты функции globals().
>>> import math
>>> my_const = 6.28
>>> timeit.timeit('math.cos(my_const)', globals=globals())
0.12635547306854278
Можно также передавать в timeit имя функции (без параметров):>>> import timeit
>>> def foo(): "-".join(map(str, range(1000)))
...
>>> timeit.timeit(foo, number=1000)
📎 timeit можно вызвать из терминала:python -m timeit -s "from math import sqrt" -n 10000 "x = sqrt(25)"
После ключа -s идет строка инициализации; она выполнится единожды. Ключ -n установит число итераций теста (рекомендуется не меньше 1000).⚠️ Помните, что результаты тестов могут отличаться в зависимости от вашего компьютера, ОС, версии Python, фаз луны и много еще чего. Также советуем вам не увлекаться чрезмерной оптимизацией во вред читаемости кода.
@pro_python_code
Что выведет код?
d = {"a": 2, "b": 3, "c": 2}
f = lambda: zip(d.values(), d.keys())
max_ = max(f())
min_ = min(f())
print(max_, min_)
Выберите правильный вариант
Anonymous Quiz
7%
(2, 'a') (3, 'b')
30%
(3, 'b') (2, 'a')
6%
(2, 'c') (2, 'a')
7%
(2, 'c') (3, 'b')
12%
(3, 'b') (2, 'c')
4%
(2, 'a') (2, 'c')
35%
Посмотреть результаты
🔥 Полезные библиотеки Python. Facebook Friend List Scraper
Facebook Friend List Scraper - OSINT инструмент для сбора имен и никнеймов пользователей из больших списков друзей Facebook без ограничения скорости.
📝 Статья
⚙️ GitHub/Инструкция
@pro_python_code
Facebook Friend List Scraper - OSINT инструмент для сбора имен и никнеймов пользователей из больших списков друзей Facebook без ограничения скорости.
📝 Статья
⚙️ GitHub/Инструкция
@pro_python_code
Singleton (Одиночка) — порождающий шаблон проектирования, гарантирующий, что в однопроцессном приложении будет единственный экземпляр некоторого класса, и предоставляющий глобальную точку доступа к этому экземпляру.
📎 Реализация синглтона через декоратор класса:
Вот так мы помечаем, что класс MySingleton – синглтон:
📎 Пример (проверяем единственность экземляра):
• Обе переменные указывают на один экземпляр
• При изменении полей в одном экземпляре, они меняются и во втором.
Плохо то, что MySingleton здесь – это функция (результат работы декоратора), а не класс: вы не можете вызывать класс-методы у нее. Эта проблема решается использованием метаклассов.
@pro_python_code
📎 Реализация синглтона через декоратор класса:
def singleton(cls):
# храним все разные синглтоны с одном словаре (класс -> экземпляр)
instances = {}
def getinstance():
# если класса нет среди ключей нашего словаря - создадим экземпляр
if cls not in instances:
instances[cls] = cls()
# вернем ссылку на него
return instances[cls]
return getinstance
Вот так мы помечаем, что класс MySingleton – синглтон:
@singleton
class MySingleton:
def __init__(self):
self.x = 10
print("__init__")
📎 Пример (проверяем единственность экземляра):
>>> x1 = MySingleton()
init
>>> x2 = MySingleton()
>>> x1 is x2
True
>>> x1.x = 100
>>> x2.x
100
•
init было вызвано единажды• Обе переменные указывают на один экземпляр
• При изменении полей в одном экземпляре, они меняются и во втором.
Плохо то, что MySingleton здесь – это функция (результат работы декоратора), а не класс: вы не можете вызывать класс-методы у нее. Эта проблема решается использованием метаклассов.
# обратите внимание, метакласс наследован от type
class Singleton(type):
_instances = {}
def __call__(cls, *args, **kwargs):
if cls not in cls._instances:
cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)
return cls._instances[cls]
Прим
енение (Python 3):class MySingleton(metaclass=Singleton):
def __init__(self):
self.x = 10
print("__init__")
⚠️ Не злоупотребляйте синглтонами, они осложняют тестирование кода.@pro_python_code
🔥 CompressedCrack Python скрипт для подбора паролей к zip и rar архивам.
CompressedCrack - простой и эффективный скрипт для подбора паролей к zip и rar архивам.
Установка:
Нас интересует скрипт crack.py который принимает несколько параметров:
🌵 min_character: минимальное количество символов в пароле.
🌵 max_character: максимальное количество символов в пароле.
🌵 characters: используемые в пароле символы по которым будет осуществляться перебор, 123qwerty!@$ и т.д.
@pro_python_code
CompressedCrack - простой и эффективный скрипт для подбора паролей к zip и rar архивам.
Установка:
$ git clone https://github.com/thanhminh6996/CompressedCrack.git
$ cd ./CompressedCrack
Использование:Нас интересует скрипт crack.py который принимает несколько параметров:
$ python crack.py -i file_name min_character max_character characters
🌵 -i file_name : путь до архива.🌵 min_character: минимальное количество символов в пароле.
🌵 max_character: максимальное количество символов в пароле.
🌵 characters: используемые в пароле символы по которым будет осуществляться перебор, 123qwerty!@$ и т.д.
$ python crack.py -i file.zip 1 5 1234567890
⚙️ GitHub/Инструкция@pro_python_code
Каким будет результат выполнения кода?
Anonymous Quiz
6%
2*34+23+3
11%
2*34 + 23 + 3
2%
243
58%
666
2%
None
7%
Error
14%
Узнать ответ
🌟 Малоизвестная фишка генератора
Если функция принимает единственный аргумент, то можно в нее передать генераторное выражение без скобок:
Тоже самое, что и:
Но вне вызова функции генератор недопустимо использовать без скобок – это синтаксическая ошибка:
@pro_python_code
Если функция принимает единственный аргумент, то можно в нее передать генераторное выражение без скобок:
>>> sum(x * x for x in range(5))
30
Тоже самое, что и:
>>> sum((x * x for x in range(5)))
30
Но вне вызова функции генератор недопустимо использовать без скобок – это синтаксическая ошибка:
>>> g = x * x for x in range(5)
File "<stdin>", line 1
g = x * x for x in range(5)
^
SyntaxError: invalid syntax
@pro_python_code