POSTMAN - это инструмент для тестирования и отладки API, который предоставляет разработчикам простой и удобный способ отправки HTTP-запросов и получения ответов. Он имеет интуитивно понятный пользовательский интерфейс, который позволяет легко создавать и отправлять запросы различных типов, таких как GET, POST, PUT и DELETE. POSTMAN также позволяет добавлять параметры запросов, заголовки и тело запроса, что делает его мощным инструментом для тестирования различных сценариев.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9👍5🔥2
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
❤5👍4🔥1
Хендлеры могут быть созданы для обработки текстовых сообщений, фотографий, аудио и других типов сообщений, которые могут быть отправлены в телеграм бота.
При создании бота в телеграме, необходимо создать соединение с 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❤2🔥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
👍6❤3🔥2
Питонисты, общий сбор на Selectel Python MeetUp 🐍
📍 30 октября, 18:00, Санкт-Петербург или онлайн
Встретимся с топовыми спикерами из Selectel, Яндекса и Райффайзен Банка. Протестируем экосистему mypy на разных версиях Python, обсудим хаос-тесты и cron/systemd timers. В конце вас ждет афтепати с пиццей и нетворкинг с тимлидами.
А теперь конкретнее — на митапе вы узнаете:
✔️ как использовать экосистему mypy в инфраструктуре с 400+ микросервисов,
✔️ как запускать задачи по расписанию от cron/systemd timers до чистого Python,
✔️ насколько сильно можно нагрузить систему, прежде чем она сломается.
Мероприятие абсолютно бесплатное. Приходите в офис Selectel или подключайтесь онлайн. Регистрируйтесь по ссылке.
P.S. Отправляйте коллеге-питонисту и приходите на митап вместе 😎
Реклама. АО "Селектел". erid:2W5zFFwSz9e
📍 30 октября, 18:00, Санкт-Петербург или онлайн
Встретимся с топовыми спикерами из Selectel, Яндекса и Райффайзен Банка. Протестируем экосистему mypy на разных версиях Python, обсудим хаос-тесты и cron/systemd timers. В конце вас ждет афтепати с пиццей и нетворкинг с тимлидами.
А теперь конкретнее — на митапе вы узнаете:
✔️ как использовать экосистему mypy в инфраструктуре с 400+ микросервисов,
✔️ как запускать задачи по расписанию от cron/systemd timers до чистого Python,
✔️ насколько сильно можно нагрузить систему, прежде чем она сломается.
Мероприятие абсолютно бесплатное. Приходите в офис Selectel или подключайтесь онлайн. Регистрируйтесь по ссылке.
Реклама. АО "Селектел". erid:2W5zFFwSz9e
❤4
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
15%
True True
12%
False False
31%
True False
11%
False True
31%
Error
🤔4🤨2🤓1
В Python при приведении к bool любая непустая строка(даже если это пробелы) оценивается как True, а комплексный ноль - False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3👾2🔥1
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
👍6🔥2❤1