Пишем конвертер валют на 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
numpy.meshgrid(): How Does It Work? When Do You Need It? Are There Better Alternatives?
https://thepythoncodingbook.com/2022/05/28/numpy-meshgrid/
https://thepythoncodingbook.com/2022/05/28/numpy-meshgrid/