DevPyConf на Cтачке
Python-разработка│ 3 октября │ Санкт-Петербург
На DevPyConf соберутся ведущие Python разработчики, чтобы обсудить тренды, архитектуру и инструменты.
Ключевые треки конференции:
— Архитектура и python
— Современный ML, AI тулинг
Программа и билеты на сайте
Следите за новостями в Телеграме и ВК
Python-разработка│ 3 октября │ Санкт-Петербург
На DevPyConf соберутся ведущие Python разработчики, чтобы обсудить тренды, архитектуру и инструменты.
Ключевые треки конференции:
— Архитектура и python
— Современный ML, AI тулинг
Выступят спикеры:
→ Михаил Гурбанов, TechLead в Райффайзенбанке. Тема доклада: «Архитектура сервисов в AI ландшафте»
→ Евгений Блинов, Разработчик в Авито. Тема доклада: «Дружим sync и async питоны»
→ Юрий Маркин, Старший разработчик в X5 Tech. Тема доклада: «Pythorust не серебряная пуля»
→ Денис Воронкин, Backend разработчик в KTS. Тема доклада: «Почему надежно кешировать данные сложно?»
→ Александр Кучин, Python разработчик в Литрес. Тема доклада: «Мы уменьшили длительность нашего пайплайна в несколько раз - до 17 минут»
→ Алексей Фиссон, Тим лид в X5 Tech. Тема доклада: «Чем вам asyncio не фреймворк, а Redis не брокер?»
→ Сергей Волков, Team Lead в Сбере. Тема доклада: «Метрики без боли: AI-агент вместо BI-навигации»
→ Денис Аникин, Тимлид/Комьюнити лид в Райффайзенбанке. Тема доклада: «Выбираем LLM gateway»
Программа и билеты на сайте
Следите за новостями в Телеграме и ВК
❤2
Синтаксис:
range(начало, конец, шаг)
По умолчанию: начало = 0, шаг = 1.
# Простой range от 0 до 2
for i in range(3):
print(i)
# Range с началом и шагом
for i in range(1, 10, 2):
print(i)
# Вывод:
# 0
# 1
# 2
# 1
# 3
# 5
# 7
# 9
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤3🔥3
- Динамическая типизация: Если вы хотите задать контракт для классов без явного указания на наследование.
- Гибкость: Позволяет различным классам предоставлять свою реализацию методов, сохраняя общий интерфейс.
- Улучшение читаемости: Помогает лучше понять как должны взаимодействовать различные части кода.
from typing import Protocol
# Определяем протокол
class Movable(Protocol):
def move(self) -> None:
...
# Класс, реализующий этот протокол
class Car:
def move(self) -> None:
print("Car is moving")
class Bird:
def move(self) -> None:
print("Bird is flying")
def drive(vehicle: Movable) -> None:
vehicle.move()
# Используем
car = Car()
bird = Bird()
drive(car) # Output: Car is moving
drive(bird) # Output: Bird is flying
Protocol — мощный инструмент для задания интерфейсов в Python. Он обеспечивает гибкость и улучшает структуру вашего кода. Используйте его, когда нужно задать контракты для различных классов без строгой иерархии наследования.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6👍5🔥3
fruits = ["apple", "banana", "orange"]
for index, fruit in enumerate(fruits, start=1):
print(index, fruit)
1 apple
2 banana
3 orange
enumerate() вернёт кортежи с индексом и значением.enumerate() удобно использовать вместо range(len()) для более чистого и читаемого кода при переборе списков, кортежей и других коллекций.Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍4🔥3
Pickle — это стандартная библиотека Python, которая позволяет сохранять (сериализовать) и восстанавливать (десериализовать) объекты Python в файлы. Это особенно полезно для долгосрочного хранения данных или передачи их между программами. С помощью pickle можно сохранить сложные структуры данных, такие как списки, словари, классы и даже функции.
import pickle
# Исходные данные
data = {
"name": "Alice",
"age": 30,
"skills": ["Python", "Data Science", "Machine Learning"]
}
# Сохраняем данные в файл
with open('data.pkl', 'wb') as file:
pickle.dump(data, file)
print("Данные успешно сохранены!")
import pickle
# Восстанавливаем данные из файла
with open('data.pkl', 'rb') as file:
loaded_data = pickle.load(file)
print("Восстановленные данные:")
print(loaded_data)
Восстановленные данные:
{'name': 'Alice', 'age': 30, 'skills': ['Python', 'Data Science', 'Machine Learning']}
- Простота использования: Легко сохранять и восстанавливать сложные структуры данных.
- Гибкость: Поддерживает практически все типы данных Python.
- Быстродействие: Pickle работает быстрее, чем другие форматы, такие как JSON.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥3
👍4🤔2👌2
Список nums = [1, 2, 3, 4, 5]
В генераторе [x**2 for x in nums if x % 2 == 0]:
берём только те x, которые делятся на 2 (чётные)
это 2 и 4
возводим их в квадрат: 2**2 = 4, 4**2 = 16
Результат: [4, 16]
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤5👍2
def greet():
print("Hello!")
if name == "main":
greet()
greet() вызовется только если файл запущен напрямую, но не при импорте его в другой модуль.if name == "main" удобно использовать для тестирования, запуска скриптов и избежания лишнего выполнения кода при импорте.Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5🔥4
# Выводит числа от 0 до 4
for i in range(5):
print(i)
# Выводит чётные числа от 2 до 10
for i in range(2, 11, 2):
print(i)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7🔥2🤣1
def greet(name, greeting="Привет"):
print(f"{greeting}, {name}!")
greet("Анна") # Привет, Анна!
greet(name="Иван", greeting="Здравствуйте") # Здравствуйте, Иван!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥4❤3
from langchain import LLMChain
from langchain.llms import OpenAI
# Инициализация языковой модели
llm = OpenAI(api_key="YOUR_API_KEY")
# Определение шаблона для вопроса
template = "Какой ответ на вопрос: {question}?"
# Создание цепочки с использованием шаблона
chain = LLMChain(llm=llm, prompt=template)
# Ввод вопроса
question = "Что такое LangChain?"
# Получение ответа
response = chain.run({"question": question})
print(response)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤5🔥4
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
❤6👍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
👍7❤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