from TermTk import TTk, TTkButton
def on_click():
print("Button clicked!")
root = TTk.TTk()
btn = TTkButton(text="Click me!", pos=(10,5), size=(20,3))
btn.clicked.connect(on_click)
root.mainloop()
Полноценный набор UI-компонентов (CheckBox, RadioButton, ScrollArea) + поддержка "тёмной/светлой" тем прямо в терминале.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤4🔥4
import webview
# Создаем окно с URL
webview.create_window('Пример pywebview', '<https://example.com>')
# Запускаем приложение
webview.start()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3❤2👏1
Оператор %s используется для вставки значения переменной в строку. Для этого нужно указать %s внутри строки и затем после строки поставить знак %, за которым следует переменная, значения которой нужно вставить.
Пример:
name = "John"
age = 25
print("Меня зовут %s и мне %s лет." % (name, age))
Вывод:
Меня зовут John и мне 25 лет.
Оператор %s также может использоваться для форматирования чисел. Для этого нужно указать %s внутри строки и затем после строки поставить знак %, за которым следует число, значение которого нужно вставить.
Пример:
number = 42
print("Ответ на главный вопрос жизни: %s" % number)
Вывод:
Ответ на главный вопрос жизни: 42
number в строку.Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥5❤1
x = 10
def demo():
y = 5
print("Локальные:", locals())
print("Глобальные:", globals()["x"])
demo()
Локальные: {'y': 5}
Глобальные: 10
- Отладка и инспекция переменных
- Динамическое выполнение кода (eval, exec)
- Построение интерактивных сред (например, REPL или дебаггеры)
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤2
Автоматизирует всю рутину: предобработку данных, feature engineering и подбор моделей с визуализацией результатов.
import dabl
data = dabl.datasets.load_titanic()
dabl.SimpleClassifier().fit(data, target_col="survived")
# Готово! Смотрите отчёт в Jupyter
Мгновенный старт работы с данными — библиотека сама определяет типы фичей, подбирает трансформеры и строит interpretable-модели.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤1
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁16🤣3👍2💯1😐1
help(print)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤2🔥2
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8👍4❤2
👀6🔥2🤔1🤨1
Возникнет ошибка. Т.к. функция zip() ожидает итерируемые объекты (например, списки, кортежи или строки), а передаётся два целых числа
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥5❤2
Сравнение изображений через хеши (ahash, dhash, phash, whash), что позволяет быстро искать дубликаты без полного перебора пикселей.
from PIL import Image
import imagehash
hash1 = imagehash.average_hash(Image.open('image1.jpg'))
hash2 = imagehash.average_hash(Image.open('image2.jpg'))
print(hash1 - hash2) # Чем меньше разница, тем больше похожи изображения
Автоматизация поиска дубликатов с высокой точностью и поддержкой разных алгоритмов хеширования. Отлично подойдет для очистки медиабиблиотек.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥3
Keras имеет несколько преимуществ, которые делают его популярным выбором среди разработчиков машинного обучения. Во-первых, Keras обладает простым и интуитивно понятным API, что делает его легко изучаемым и использованием даже для новичков. Во-вторых, Keras предоставляет множество предварительно обученных моделей, которые можно использовать для решения различных задач. Наконец, Keras обеспечивает высокую производительность и эффективность, благодаря использованию оптимизированных библиотек, таких как TensorFlow и Theano.
Keras поддерживает широкий спектр возможностей машинного обучения. Он позволяет создавать и обучать различные типы нейронных сетей, включая полносвязные сети, сверточные нейронные сети и рекуррентные нейронные сети. Кроме того, Keras предоставляет инструменты для работы с изображениями, текстом и временными рядами. Он также поддерживает автоматическое распределение обучения на несколько GPU, что позволяет ускорить процесс обучения на больших данных.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3❤1
user_input = " hello world "
cleaned = user_input.strip()
print(cleaned)
# ➜ "hello world"
strip() убирает лишние пробелы по краям строки, оставляя только значимый текст.Please open Telegram to view this post
VIEW IN TELEGRAM
❤5🔥3👍2
Асинхронное программирование - это способ написания кода, позволяющий выполнять несколько задач одновременно без блокировки основного потока выполнения. В Python для этого используются ключевые слова async и await, которые делают функции асинхронными и определяют точки, где происходит ожидание.
1. Увеличение производительности: Асинхронный код позволяет эффективно использовать ресурсы, ускоряя выполнение задач.
2. Масштабируемость: Обработка множества задач одновременно без блокировки позволяет создавать масштабируемые приложения.
3. Улучшен отклик приложения: Пользователи получают быстрый отклик, даже если выполняются длительные операции.
- `async def` и `await`: Обозначают асинхронные функции и точки ожидания выполнения задачи.
- Цикл событий (Event Loop): Основной механизм управления выполнением асинхронных задач.
- Корутины (Coroutines): Асинхронные функции, которые могут приостанавливать свое выполнение.
import asyncio
async def async_example():
print("Начало выполнения")
await asyncio.sleep(2)
print("Завершение выполнения")
async def main():
tasks = [async_example() for _ in range(5)]
await asyncio.gather(*tasks)
if __name__ == "__main__":
asyncio.run(main())
Множество библиотек и фреймворков в Python уже поддерживают асинхронное программирование, включая aiohttp, asyncio, и многие другие. Это позволяет создавать высокопроизводительные веб-приложения, работающие с асинхронными запросами.
- Документация Python по асинхронному программированию
- Статья на Real Python: "Async IO in Python: A Complete Walkthrough"
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5🔥2
В Python, чтобы скрыть атрибуты объекта, их нужно объявить как приватные, используя два подчеркивания перед именем атрибута. Например, для создания приватного атрибута
name нужно написать __name. Также для доступа к этому атрибуту извне класса нужно использовать специальные методы get и set.get возвращает значение приватного атрибута, а метод set устанавливает новое значение. Эти методы должны быть определены в самом классе. Например:class Person:
def __init__(self, name):
self.__name = name
def get_name(self):
return self.__name
def set_name(self, name):
self.__name = name
person = Person("John")
print(person.get_name()) # "John"
person.set_name("Mike")
print(person.get_name()) # "Mike"
- Защита данных от внешнего доступа
- Предотвращение случайных изменений данных
- Упрощение взаимодействия с объектами
- Сокрытие сложной логики работы объекта от пользователя
- Да, будет!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍3🔥3🤣1
python file.py.1. Парсинг — Python-код превращается в AST (дерево разбора)
2. Компиляция — AST превращается в байткод (
.pyc), понятный интерпретатору 3. Исполнение — байткод читается виртуальной машиной, которая шаг за шагом исполняет инструкции
import dis
def hello():
print("hi")
dis.dis(hello)
CPython — медленный, но гибкий. Именно тут живёт GIL, и именно он влияет на потоки.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥3❤1
data = {}
data.setdefault("users", []).append("Анна")
data.setdefault("users", []).append("Борис")
print(data)
{'users': ['Анна', 'Борис']}if key not in dict.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍6🔥2
Одним из основных преимуществ Loguru является его простота использования. В отличие от стандартной библиотеки logging, которая может показаться сложной и громоздкой, Loguru предлагает простой и интуитивно понятный интерфейс. Для начала работы достаточно импортировать библиотеку и начать логирование с помощью одной строки кода:
from loguru import logger
logger.info("Привет, Loguru!")
Это позволяет значительно сократить время на настройку и сразу приступить к логированию.
Loguru предоставляет широкие возможности для настройки логирования. Вы можете легко настроить формат сообщений, уровни логирования и маршрутизацию логов. Например, вы можете отправлять логи в разные файлы в зависимости от их уровня важности:
logger.add("debug.log", level="DEBUG")
logger.add("error.log", level="ERROR")
logger.debug("Это сообщение для отладки")
logger.error("Это сообщение об ошибке")Или же отправлять их на удалённый сервер для дальнейшего анализа. Библиотека также поддерживает асинхронное логирование, что делает её отличным выбором для высоконагруженных приложений.
Помимо стандартных возможностей логирования, Loguru включает в себя множество дополнительных функций, которые делают его ещё более привлекательным. Например, библиотека поддерживает автоматическое добавление контекстной информации к логам, такую как имя функции, строка кода и т.д. Также существует возможность автоматического ротации логов, что позволяет избежать переполнения дискового пространства:
logger.add("file_{time}.log", rotation="500 MB")
logger.info("Это сообщение будет записано в новый файл при достижении лимита в 500 MB")Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1🔥1
— поддерживает разные типы данных (строки, списки, множества, хэши, sorted sets)
— умеет работать с TTL, Pub/Sub, скриптами (Lua)
— поддерживает персистентность и репликацию
— только строки и числа
— максимально простой и быстрый
— нет встроенной персистентности
— хорош для простого кэширования без сложной логики
Redis — если нужно больше, чем просто кэш (например, счётчики, очереди, блокировки)
Memcached — если важна скорость и simplicity при коротком сроке жизни данных
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥6👍3❤1