Pythoner
7.22K subscribers
859 photos
27 videos
4 files
653 links
Полезные материалы по Python, которые будут интересны опытному и начинающему разработчику.

Сотрудничество - @flattys
Цены - @serpent_media

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Celery Beat — это встроенный планировщик задач в экосистеме Celery, который позволяет запускать фоновые задачи по расписанию. Это идеальный инструмент для выполнения регулярных операций: очистки кэша, отправки отчетов, проверки данных и других автоматизированных действий.

➡️Основные возможности Celery Beat:
- Регулярное выполнение задач: Позволяет настроить запуск задач каждые несколько секунд, минут, часов или в определённые дни

- Интеграция с Django: В связке с django-celery-beat можно управлять расписанием через админ-панель или модели базы данных

- Гибкость расписания: Поддержка как фиксированных интервалов, так и расписаний по крону (cron-like schedules)

- Централизованное управление: Все задачи централизованно управляются из одного места — брокера сообщений (Redis, RabbitMQ и т.п.)

➡️Пример использования в Django проекте:
1. Установите зависимости:
pip install celery django-celery-beat


2. Добавьте в settings.py:
INSTALLED_APPS += ['django_celery_beat']

CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers:DatabaseScheduler'


3. Создайте периодическую задачу:
from celery import shared_task

@shared_task
def daily_cleanup():
print("Очистка старых данных...")


4. Зарегистрируйте задачу в базе данных:
Это можно сделать через админ-панель Django или программно, используя ORM модели PeriodicTask, IntervalSchedule и CrontabSchedule из django_celery_beat.

5. Запустите планировщик Celery Beat:
celery -A your_project_name beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler


6. Не забудьте запустить worker , чтобы задачи выполнялись:
celery -A your_project_name worker -l info


Полезные ссылки:
Документация
GitHub

💡Заключение:
Celery Beat — мощный и гибкий инструмент для организации периодических задач в Python-приложениях. Особенно удобен в связке с Django и Redis. Легко масштабируется и поддерживает динамическое управление расписанием прямо из кода или через административный интерфейс.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍103🔥2
✈️Flask-SocketIO — это расширение для фреймворка Flask, которое позволяет легко добавлять веб-сокеты в ваши веб-приложения. Веб-сокеты позволяют создавать интерактивные и динамические веб-приложения, которые могут обмениваться данными в реальном времени. Flask-SocketIO идеально подходит для создания чатов, онлайн-игр, дашбордов и других приложений, требующих мгновенного обновления данных.

➡️Основные возможности Flask-SocketIO:
1. Поддержка веб-сокетов: Flask-SocketIO позволяет легко добавлять веб-сокеты в ваши веб-приложения, обеспечивая двусторонний обмен данными в реальном времени.

2. Интеграция с Flask: Flask-SocketIO интегрируется с Flask, что позволяет использовать все возможности Flask для создания веб-приложений.

3. Поддержка множества транспортов: Flask-SocketIO поддерживает несколько транспортов, включая WebSocket, polling и long-polling, что обеспечивает совместимость с различными клиентами.

4. Простота использования: Flask-SocketIO предоставляет простой и интуитивный API, который позволяет быстро начать работу с веб-сокетами.

5. Масштабируемость: Flask-SocketIO позволяет масштабировать веб-приложения, добавляя дополнительные рабочие процессы или серверы.

6. Поддержка клиентов на разных платформах: Flask-SocketIO поддерживает клиентов на различных платформах, включая браузеры, мобильные устройства и серверы.

➡️Создание простого веб-приложения с веб-сокетами:
from flask import Flask, render_template
from flask_socketio import SocketIO, send

app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app)

@app.route('/')
def index():
return render_template('index.html')

@socketio.on('message')
def handle_message(message):
send(message)

if __name__ == '__main__':
socketio.run(app)


Полезные ссылки:
Официальный сайт
GitHub

💡Заключение:
Fask-SocketIO идеально подходит для создания интерактивных и динамических приложений, требующих мгновенного обновления данных. Благодаря простоте использования и гибкости.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥3🥰1
👍62🔥2
Что выдаст код выше
Anonymous Quiz
63%
True
10%
False
3%
3
13%
5
11%
Error
🤔10🤓3🤨2
🤔Разбор

Разбор выражения x > y and x or y
Вычисление x > y
x = 5, y = 3
x > y возвращает True.

Вычисление x > y and x:
x > y равно True, поэтому результатом and будет второй операнд — x (равно 5).

Вычисление (x > y and x) or y:
Результат (x > y and x) равен 5.
5 является "истинным" значением, поэтому оператор or возвращает первый операнд — 5.

Итоговый результат:
Значение переменной z становится равным 5, и это значение выводится на экран.


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤯63🔥2
✈️Pytest — это мощный и гибкий фреймворк для тестирования в Python. Он позволяет писать простые и читаемые тесты, которые легко интегрируются с вашим кодом. Pytest поддерживает множество плагинов и расширений, что делает его идеальным инструментом для тестирования как небольших проектов, так и крупных приложений.

➡️Основные возможности Pytest:
- Простота использования: Pytest позволяет писать тесты на Python, используя простой и интуитивный синтаксис.

- Автоматическое обнаружение тестов: Pytest автоматически обнаруживает и запускает тесты, что упрощает процесс тестирования.

- Мощные возможности утверждений: Pytest предоставляет мощные инструменты для утверждений, которые позволяют легко проверять результаты тестов.

- Поддержка фикстур: Pytest поддерживает фикстуры, которые позволяют создавать и использовать общие данные и ресурсы в тестах.

- Расширяемость:
Pytest поддерживает множество плагинов и расширений, которые позволяют добавлять новые функции и возможности.

- Интеграция с другими инструментами: Pytest легко интегрируется с другими инструментами и библиотеками Python, такими как Flask, Django и NumPy.

➡️Примеры использования:
1. Простой тест:
# test_example.py
def test_addition():
assert 1 + 1 == 2


2. Использование фикстур:
# test_example.py
import pytest

@pytest.fixture
def numbers():
return [1, 2, 3]

def test_sum(numbers):
assert sum(numbers) == 6


3. Параметризация тестов:
# test_example.py
import pytest

@pytest.mark.parametrize("a, b, expected", [
(1, 2, 3),
(4, 5, 9),
(6, 7, 13),
])
def test_addition(a, b, expected):
assert a + b == expected


Полезные ссылки:
Официальный сайт
GitHub

💡Заключение
Pytest позволяет писать простые и читаемые тесты, которые легко интегрируются с вашим кодом. Он поддерживает множество плагинов и расширений, что делает его идеальным инструментом для тестирования как небольших проектов, так и крупных приложений.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍85🔥3
✈️Clint — модуль Python для создания красивых CLI-приложений. Он предлагает удобные инструменты для работы с цветным выводом, прогресс-барами и простым вводом пользователя.

➡️Основные возможности Clint:
- Поддержка цветов и отступов
- Простой и мощный столбцовый принтер
- Итераторный индикатор прогресса
- Неявная обработка аргументов
- Поддержка Unix-пайпов
- Управление каталогами приложений

➡️Примеры использования:
1. Отступы и цитаты:
from clint.textui import puts, indent

puts('Неотступленный текст')
with indent(4):
puts('Отступленный текст')


2. Цветной текст:
from clint.textui import colored, puts

puts(colored.red('Красный текст'))


3. Чтение аргументов командной строки:
from clint import arguments
args = arguments.Args()
first_arg = args.get(0)


💡Заключение
Clint подходит разработчикам, которые хотят быстро добавить форматирование текста и удобство в свои скрипты без тяжёлых зависимостей. Он предлагает множество функций, которые делают разработку более простой и эффективной.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3🔥2
✈️PyYAML — это библиотека Python для работы с форматом YAML (YAML Ain't Markup Language). YAML — это популярный формат для сериализации данных, который широко используется для конфигурационных файлов, данных и других структур. PyYAML позволяет легко читать и записывать данные в формате YAML, что делает ее идеальным инструментом для работы с конфигурационными файлами и сериализации данных.

➡️Основные возможности PyYAML:
- Чтение и запись YAML-файлов: PyYAML позволяет легко читать и записывать данные в формате YAML.

- Поддержка различных типов данных: PyYAML поддерживает различные типы данных, включая словари, списки, строки, числа и другие.

- Безопасная загрузка данных: PyYAML предоставляет безопасный способ загрузки данных из YAML-файлов, что предотвращает выполнение вредоносного кода.

- Интеграция с другими библиотеками: PyYAML легко интегрируется с другими библиотеками Python, такими как Flask, Django и Pandas, что позволяет использовать ее в существующих проектах.

- Простота использования: PyYAML предоставляет простой и интуитивный API, который позволяет быстро начать работу с форматом YAML.

➡️Примеры использования:
1. Чтение YAML-файла:
import yaml

# Пример YAML-файла
yaml_file = """
name: John Doe
age: 30
address:
street: 123 Main St
city: Anytown
state: CA
"""

# Загрузка данных из YAML-файла
data = yaml.safe_load(yaml_file)

# Вывод данных
print(data['name']) # Вывод: John Doe
print(data['address']['city']) # Вывод: Anytown


2. Запись данных в YAML-файл:
import yaml

# Пример данных
data = {
'name': 'John Doe',
'age': 30,
'address': {
'street': '123 Main St',
'city': 'Anytown',
'state': 'CA'
}
}

# Запись данных в YAML-файл
with open('output.yaml', 'w') as file:
yaml.dump(data, file)


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥2
✈️Flask-WTF — это расширение для фреймворка Flask, которое упрощает работу с формами. Оно интегрирует Flask с библиотекой WTForms, предоставляя мощные инструменты для создания, валидации и обработки форм. Flask-WTF идеально подходит для разработчиков, которые хотят быстро и легко добавить формы в свои веб-приложения.

➡️Основные возможности Flask-WTF:
- Интеграция с WTForms: Flask-WTF интегрирует Flask с WTForms, что позволяет использовать все возможности WTForms для создания и валидации форм.

- Валидация данных: Flask-WTF предоставляет мощные инструменты для валидации данных, включая встроенные валидаторы и возможность создания собственных валидаторов.

- CSRF-защита: Flask-WTF автоматически добавляет CSRF-защиту для всех форм, что повышает безопасность вашего приложения.

➡️Примеры использования:
1. Создание формы:
from flask_wtf import FlaskForm
from wtforms import StringField, PasswordField, validators

class LoginForm(FlaskForm):
username = StringField('Username', [validators.Length(min=4, max=25)])
password = PasswordField('Password', [
validators.DataRequired(),
validators.EqualTo('confirm', message='Passwords must match')
])
confirm = PasswordField('Repeat Password')


2. Использование формы в Flask:
from flask import Flask, render_template, flash, redirect, url_for
from forms import LoginForm

app = Flask(__name__)
app.secret_key = 'your_secret_key'

@app.route('/login', methods=['GET', 'POST'])
def login():
form = LoginForm()
if form.validate_on_submit():
flash('Form validated')
return redirect(url_for('home'))
return render_template('login.html', form=form)


3. Создание шаблона HTML для формы:
<!-- templates/login.html -->
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
<form method="post">
{{ form.hidden_tag() }}
<p>
{{ form.username.label }}<br>
{{ form.username(size=32) }}
</p>
<p>
{{ form.password.label }}<br>
{{ form.password(size=32) }}
</p>
<p>
{{ form.confirm.label }}<br>
{{ form.confirm(size=32) }}
</p>
<p><input type="submit" value="Login"></p>
</form>
</body>
</html>


Полезные ссылки:
Официальный сайт
GitHub

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍102🔥2
👍7
🤔10🤷‍♀5👍3🤓1👀1
🤔Разбор

dict() работает так, что он либо ничего не принимает и возвращает {}, либо принимает список из списков ключ-значение.
Вот так:
[["key", "value"], ] -> {"key": "value",}
Но мы же знаем что строка тоже итерируется, следовательно первый символ строки становится ключом, а второй - значением. Так и выходит результат {'A': 'B', 'O': 'L', 'Q': 'N'}

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
21👍54🔥3
✈️MongoDB — это популярная NoSQL база данных, которая позволяет хранить и обрабатывать большие объемы структурированных данных. PyMongo — это официальная библиотека Python для работы с MongoDB. Она предоставляет простой и мощный интерфейс для взаимодействия с базой данных MongoDB, включая подключение, вставку, обновление, удаление и запрос данных.

➡️Основные возможности PyMongo:
- CRUD-операции: PyMongo предоставляет полный набор CRUD-операций (создание, чтение, обновление, удаление) для работы с данными в MongoDB.

- Поддержка индексов: PyMongo позволяет создавать и управлять индексами в MongoDB, что повышает производительность запросов.

- Агрегация и группировка: PyMongo поддерживает агрегацию и группировку данных, что позволяет выполнять сложные аналитические запросы.

- Транзакции: PyMongo поддерживает транзакции, что позволяет выполнять атомарные операции в базе данных.

- Поддержка репликации и шардинга: PyMongo поддерживает репликацию и шардинг, что позволяет масштабировать базу данных и обеспечить высокую доступность.

➡️Примеры использования:
1. Подключение к MongoDB:
from pymongo import MongoClient

# Создание подключения к MongoDB
client = MongoClient('mongodb://localhost:27017/')

# Выбор базы данных
db = client['mydatabase']


2. Создание коллекции и вставка данных:
# Создание коллекции
collection = db['users']

# Вставка данных
user = {"name": "John", "age": 30, "city": "New York"}
result = collection.insert_one(user)
print('One post: {0}'.format(result.inserted_id))


Полезные ссылки:
Официальный сайт
GitHub

💡Заключение
PyMongo идеально подходит для разработчиков, которые хотят быстро и легко интегрировать MongoDB в свои проекты. Так же идеально подходит для быстрого старта проектов, гибких структур данных (например, если у разных пользователей — разные поля), прототипирования и MVP.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍105🔥3👌2
✈️Слышал про Docker, но до сих пор не понял, зачем он нужен? Или думаешь, что это «что-то для DevOps»? Сейчас всё разложу по полочкам — будет понятно даже если ты только начал кодить.

➡️Представь: твой проект — это коробка с Lego.

Ты собрал красивый замок (проект), поставил его на стол (твой комп). Всё работает.

Но теперь ты хочешь:
- Перекинуть замок другу — и у него не хватает деталей (зависимостей).
- Поставить его на полку в другой комнате — и там другой размер стола (окружение).
- Запустить сразу 10 таких замков — и вдруг всё ломается.

⬆️Docker решает это навсегда.

➡️Что такое Docker?

Это контейнеризация.
Docker упаковывает твой проект со всеми зависимостями: библиотеками, окружением, системными настройками — и превращает в контейнер, который можно запускать где угодно.

Контейнер — это как мини-компьютер внутри твоего компа, где всё настроено именно под твой проект.

➡️Зачем нужен Docker?
Больше никаких “у меня не работает, а у тебя работает”
Всё окружение проекта — в одной команде docker run
Переезд на сервер — в пару кликов
Можно тестить, не ломая свою систему
Легко клонировать проекты и передавать команде
Изоляция = безопасность

➡️Пример: Python-проект с Flask
Обычно:
pip install flask
python app.py


С Docker:
FROM python:3.10
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "app.py"]


Затем:
docker build -t myapp .
docker run -p 5000:5000 myapp


⬆️Flask-приложение запускается даже на пустом сервере.

➡️Почему стоит начать с Docker уже сегодня?
- Он сэкономит тебе часы — буквально.
- Ты начнёшь думать как профессиональный разработчик.
- И это must-have навык в любом резюме.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍116🔥3
✈️FastAPI — это современный, быстрый и высокопроизводительный фреймворк для создания веб-приложений и API на Python 3.6 и выше, основанный на стандартных типах Python. FastAPI был разработан для создания простых и читаемых API, а также для обеспечения высокой производительности.

➡️Основные возможности FastAPI:
- Автоматическая генерация документации: FastAPI автоматически генерирует документацию для вашего API в форматах OpenAPI, Swagger и ReDoc. Это позволяет быстро и легко документировать ваши endpoints.

- Высокая производительность: FastAPI основан на Starlette и Pydantic, что обеспечивает высокую производительность и низкую задержку.

- Типизация и валидация данных: FastAPI использует типы Python для валидации данных, что позволяет автоматически проверять и преобразовывать данные запросов.

- Асинхронность: FastAPI поддерживает асинхронные функции, что позволяет создавать высокопроизводительные веб-приложения.

➡️Примеры использования:
1. Создание простого API:
from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def read_root():
return {"message": "Hello World"}


2. Создание параметризированных маршрутов:
from fastapi import FastAPI

app = FastAPI()

@app.get("/items/{item_id}")
async def read_item(item_id: int, q: str = None):
return {"item_id": item_id, "q": q}


3. Создание запросов с телом:
from fastapi import FastAPI
from pydantic import BaseModel

class Item(BaseModel):
name: str
description: str = None
price: float
tax: float = None

app = FastAPI()

@app.post("/items/")
async def create_item(item: Item):
return item


Полезные ссылки:
Официальный сайт
GitHub

💡Заключение
FastAPI — это современный и мощный фреймворк для создания веб-приложений и API на Python. Он предоставляет простой и интуитивный API, который позволяет быстро начать разработку.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥3
✈️Dash — это продуктивная библиотека Python для создания аналитических веб-приложений. Dash связывает элементы пользовательского интерфейса с данными и функциями Python, что позволяет быстро создавать веб-приложения с интерактивными визуализациями. Dash был разработан командой Plotly и предоставляет мощные инструменты для создания дашбордов и веб-приложений.

➡️Основные возможности:
- Интерактивные визуализации: Dash позволяет создавать интерактивные визуализации с помощью Plotly, что делает его идеальным инструментом для создания дашбордов и аналитических приложений.
- Поддержка множества компонентов: Dash поддерживает множество компонентов, включая графики, таблицы, кнопки, переключатели и другие, что позволяет создавать сложные пользовательские интерфейсы.
- Развертывание: Dash позволяет легко развертывать веб-приложения на серверах и облачных платформах, таких как Heroku, AWS и Google Cloud.

➡️Примеры использования

1. Создание простого веб-приложения:
import dash
from dash import html, dcc
import plotly.express as px
import pandas as pd

# Создание приложения
app = dash.Dash(__name__)

# Данные
df = pd.DataFrame({
"Fruit": ["Apples", "Oranges", "Bananas", "Apples", "Oranges", "Bananas"],
"Amount": [4, 1, 2, 2, 4, 5],
"City": ["SF", "SF", "SF", "Montreal", "Montreal", "Montreal"]
})

# Создание графика
fig = px.bar(df, x="Fruit", y="Amount", color="City", barmode="group")

# Layout
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''
Dash: A web application framework for your data.
'''),
dcc.Graph(
id='example-graph',
figure=fig
)
])

# Запуск сервера
if __name__ == '__main__':
app.run_server(debug=True)


2. Создание интерактивного дашборда:
import dash
from dash import html, dcc, Input, Output
import plotly.express as px
import pandas as pd

# Создание приложения
app = dash.Dash(__name__)

# Данные
df = pd.read_csv('https://raw.githubusercontent.com/plotly/datasets/master/gapminder_unfiltered.csv')

# Layout
app.layout = html.Div([
dcc.Graph(id='graph-with-slider'),
dcc.Slider(
df['year'].min(),
df['year'].max(),
step=None,
value=df['year'].min(),
marks={str(year): str(year) for year in df['year'].unique()},
id='year-slider'
)
])

# Callback
@app.callback(
Output('graph-with-slider', 'figure'),
Input('year-slider', 'value'))
def update_figure(selected_year):
filtered_df = df[df.year == selected_year]

fig = px.scatter(filtered_df, x="gdpPercap", y="lifeExp",
size="pop", color="continent", hover_name="country",
log_x=True, size_max=55)

fig.update_layout(transition_duration=500)

return fig

# Запуск сервера
if __name__ == '__main__':
app.run_server(debug=True)


Полезные ссылки:
Официальный сайт
GitHub

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍114🔥3
✈️TensorBoard — это веб-приложение для визуализации и анализа результатов машинного обучения, разработанное командой TensorFlow. TensorBoard позволяет отслеживать метрики, такие как точность и потери, визуализировать графы вычислений, отображать встроенные векторы и многое другое.

➡️Использование TensorBoard с TensorFlow:
import tensorflow as tf

# Создание логгера TensorBoard
writer = tf.summary.create_file_writer('path/to/log-directory')

# Запись метрик
with writer.as_default():
for epoch in range(10):
tf.summary.scalar('loss', 0.5 / (epoch + 1), step=epoch)
tf.summary.scalar('accuracy', 0.9 + 0.1 * epoch, step=epoch)
writer.flush()


➡️Визуализация графа вычислений:
# Создание модели
model = tf.keras.models.Sequential([
tf.keras.layers.Dense(10, activation='relu', input_shape=(10,)),
tf.keras.layers.Dense(1, activation='sigmoid')
])

# Компиляция модели
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# Создание логгера TensorBoard
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir='path/to/log-directory', histogram_freq=1)

# Обучение модели
model.fit(x_train, y_train, epochs=10, callbacks=[tensorboard_callback])


Полезные ссылки:
Официальный сайт
GitHub

💡Заключение
TensorBoard идеально подходит для разработчиков и исследователей, которые хотят лучше понимать и улучшать свои модели машинного обучения. А благодаря простоте использования и интеграции с TensorFlow, TensorBoard легко использовать в уже существующих проектах.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥3
👍52
Что выдаст код выше
Anonymous Quiz
35%
1
17%
1.66
8%
2
4%
2.44
36%
Error
🤓74👍2🤔1🤨1👀1
🤔Разбор

Создали объект класса. В поле b (a.b) лежит число 3. В поле c, объекта a, мы создаем значение 5.
// - операция целочисленного деления. 5 // 3 —> 1 (3 помещается в 5 целиком только 1 раз)

Ответ: 1

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145🔥2🙈1