def apply(func, value):
return func(value)
def square(x):
return x * x
result = apply(square, 5)
print(result) # 25
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
if (n := len([1, 2, 3, 4])) > 3:
print(f"Список длинный: {n} элемента(ов)")
if, без отдельной строки присваивания.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍4🔥1
isinstance() и issubclass() для определения отношения наследования между классами.class A:
def __init__(self, value):
self.value = value
class B:
def __init__(self, value):
self.value = value
def __subclasshook__(cls, subclass):
return (hasattr(subclass, 'value') and
callable(subclass.value) and
subclacc.value.__name__ == 'print_value')
class C:
def __init__(self, value):
self.value = value
def print_value(self):
print(self.value)
a = A(5)
b = B(10)
c = C(15)
# Проверка
print(issubclass(C, B)) # True
print(issubclass(A, B)) # False
subclasshook класса B проверяет, есть ли у подкласса метод print_value. Если да, то возвращает True, что позволяет считать его подклассом B.Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍4🔥2
Хендлеры могут быть созданы для обработки текстовых сообщений, фотографий, аудио и других типов сообщений, которые могут быть отправлены в телеграм бота.
При создании бота в телеграме, необходимо создать соединение с API телеграма. Затем, для каждого типа сообщений, необходимо создать соответствующий хендлер, который будет обрабатывать этот тип сообщения.
Когда пользователь отправляет сообщение в бота, телеграм сервер отправляет это сообщение в вашу программу, в которой запущен ваш бот. Затем, используя созданные хендлеры, ваша программа обрабатывает это сообщение и выполняет определенные действия в ответ на это сообщение.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤4👍3🔥3🤔1
Dask - это гибкая библиотека для параллельных вычислений в Python. Она позволяет обрабатывать большие объемы данных, распределяя нагрузку на несколько ядер процессора или даже на кластер компьютеров.
- Масштабируемость: от ноутбука до кластера
- Совместимость с экосистемой Python (NumPy, Pandas)
- Ленивые вычисления для оптимизации
import dask.array as da
# Создаем большой массив
x = da.random.random((10000, 10000), chunks=(1000, 1000))
# Выполняем операции
result = (x + 1).mean().compute()
print(f"Среднее значение: {result}")
import dask.dataframe as dd
# Читаем большой CSV файл
df = dd.read_csv('huge_file.csv')
# Выполняем группировку и агрегацию
result = df.groupby('category').agg({'value': 'mean'}).compute()
print(result)
from dask import delayed
@delayed
def process_data(x):
# Здесь может быть сложная обработка
return x * 2
data = [1, 2, 3, 4, 5]
results = [process_data(x) for x in data]
final_result = delayed(sum)(results).compute()
print(f"Итоговый результат: {final_result}")
Dask - это мощный инструмент для параллельной обработки данных в Python. Он позволяет легко масштабировать ваши вычисления и работать с большими объемами данных эффективно. Начните использовать Dask сегодня и ощутите разницу в скорости обработки ваших данных!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥1
Декоратор — это функция, которая принимает другую функцию как аргумент и возвращает новую функцию.
def my_decorator(func):
def wrapper():
print("Выполнение функции:")
func()
print("Завершено.")
return wrapper
@my_decorator
def say_hello():
print("Привет, мир!")
say_hello()
Выполнение функции:
Привет, мир!
Завершено.
@my_decorator оборачивает функцию say_hello(), добавляя вывод до и после её выполнения. Это удобно для повторяющихся действий — логирование, проверка доступа и т.д.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥2
int, float, str, tuple, bool, frozenset
a = "hi"
b = a
a = "bye"
print(b) # hi
a = "bye" создала новый объект.list, dict, set, bytearray, user-defined объекты
a = [1, 2, 3]
b = a
a.append(4)
print(b) # [1, 2, 3, 4]
b = a — это ссылка на тот же объект.- Можно "безопасно" копировать неизменяемые значения
- С изменяемыми — нужно использовать
.copy() или copy.deepcopy(), если не хочешь менять оригиналdef add_item(lst):
lst.append(99)
my_list = [1, 2]
add_item(my_list)
print(my_list) # [1, 2, 99]
Неизменяемые типы создают копии при присваивании, изменяемые — передают ссылку.Всегда думай, что именно ты копируешь: значение или объект.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
numbers = [0, 1, 2, 3, 4]
result = any(numbers)
print(result) # Output: True
numbers = [0, 0, 0, 0, 0]
result = any(numbers)
print(result) # Output: False
0 — False
n < 0 или n > 0 или type(n) == str — True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤3🔥2
values = [1, True, "hello", 5]
result = all(values)
print(result) # True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤2🔥1
Одной из главных возможностей библиотеки PIL является возможность создания и редактирования изображений. С ее помощью можно создавать новые изображения с определенными размерами и цветовыми схемами, а также редактировать существующие изображения. Например, можно добавлять текст, рисовать графические примитивы, наносить различные эффекты и многое другое.
Библиотека PIL также предоставляет возможность обработки изображений в пакетном режиме. Это означает, что можно применять определенные операции к нескольким изображениям одновременно. Например, можно изменить размер и применить фильтр ко множеству изображений, что сэкономит время и упростит процесс обработки большого количества изображений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1🔥1
def add_item(lst):
lst.append(100)
my_list = [1, 2, 3]
add_item(my_list)
print(my_list) # [1, 2, 3, 100]
Изменяемые типы:
list, dict, set, bytearrayНеизменяемые:
int, float, str, tuple, frozenset• работе с функциями (аргументы по ссылке),
• проектировании безопасных API,
• использовании словарей и множеств (ключи должны быть immutable).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥3❤2
zeros((n, m)) - создает массив нулей с размером n x m.>>> np.zeros((3, 2))
array([[0., 0.],
[0., 0.],
[0., 0.]])
ones((n, m)) - создает массив единиц с размером n x m.>>> np.ones((2, 3))
array([[1., 1., 1.],
[1., 1., 1.]])
>>> np.ones((2, 2), dtype=np.int16)
array([[1, 1],
[1, 1]], dtype=int16)
empty() - создает массив без заполнения. Исходное содержимое случайно и зависит от состояния памяти на момент создания массива (мусор, что в ней хранится).>>> np.empty((2,2))
array([[5.e-324, 0.e+000],
[0.e+000, 5.e-324]])
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2❤1🤔1
.gitignore:# Кэш компиляции Python
__pycache__/
*.py[cod]
# Виртуальное окружение
venv/
env/
# Файлы зависимостей и IDE
*.log
*.sqlite3
*.env
*.DS_Store
# VS Code / PyCharm и прочее
.vscode/
.idea/
# Файлы зависимостей
pip-wheel-metadata/
*.egg-info/
dist/
build/
— Не лить в гит лишнее
— Исключить локальные настройки и окружение
— Сохранить проект чистым и переносимым
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
Что выдаст код выше❔
Anonymous Quiz
18%
True True
13%
False False
30%
True False
10%
False True
29%
Error
🤔6🤨2🔥1🤓1
В Python при приведении к bool любая непустая строка(даже если это пробелы) оценивается как True, а комплексный ноль - False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🔥2👾2
from dataclasses import dataclass, replace
@dataclass
class User:
name: str
age: int
user1 = User("Alice", 30)
user2 = replace(user1, age=35)
print(user2) # User(name='Alice', age=35)
- Можно изменять объект, не модифицируя оригинал.
- Работает быстрее, чем
deepcopy().- Удобно для
immutable объектов.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🔥4❤1
Для начала давайте создадим простой график. Для этого нам понадобятся данные, которые мы будем отображать на графике. В примере ниже мы создадим массив данных для точек x и y:
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.plot(x, y)
plt.show()
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤3🔥3
set1 = {1, 2, 3}
set2 = {4, 5, 6}
# Проверяем, не имеют ли два множества общих элементов
result = set1.isdisjoint(set2)
print(result) # Выводит True, поскольку множества не имеют общих элементовЕсли бы у нас было два множества с общими элементами, метод isdisjoint() вернул бы False:
set3 = {1, 2, 3}
set4 = {3, 4, 5}
result = set3.isdisjoint(set4)
print(result) # Выводит False, так как множества имеют общий элемент (число 3)-Простота и удобство проверки наличия общих элементов: Метод isdisjoint() предоставляет простой способ быстрой проверки наличия общих элементов между двумя множествами.
-Эффективность: Поиск общих элементов выполняется эффективно благодаря внутренней реализации Python для множеств.
Этот метод особенно полезен, если вам нужно определить, существует ли пересечение между двумя множествами перед выполнением других операций.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5👍3❤2
Простое тестирование и сравнение классических алгоритмов (KNN, SVD, SlopeOne) на ваших данных с акцентом на точность предсказаний.
from surprise import Dataset, KNNBasic
from surprise.model_selection import cross_validate
# Загрузка встроенного датасета MovieLens
data = Dataset.load_builtin('ml-100k')
# Обучение KNN-модели
algo = KNNBasic()
cross_validate(algo, data, measures=['RMSE'], cv=5, verbose=True)
Чистый API для экспериментов с рекомендательными алгоритмами без сложной инфраструктуры — идеально для исследований и прототипирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤2🔥2