В круглых скобках запятая сильно решает.
Умножая 'a' * 2 —> 'aa'
Список всегда список, поэтому b —> ['b', 'b']
Ну и f-строка выведет это все, предварительно отформатировав в текст.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤13👍8🔥8
1. Индексирование с помощью целых чисел: Можно использовать целые числа для доступа к элементам массива. Массивы в NumPy индексируются начиная с 0:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
print(arr[2]) # Выводит 30 (значение с индексом 2)
2. Индексирование многомерных массивов: В многомерном массиве можно использовать кортеж индексов для доступа к элементам:
import numpy as np
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr[1, 2]) # Выводит 6 (элемент во второй строке и третьем столбце)
3. Использование срезов (slicing): Можно использовать срезы для извлечения подмассива из массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
print(arr[1:4]) # Выводит [2, 3, 4] (элементы со второго по четвертый)
4. Индексирование с использованием булевых массивов: Можно использовать булевы массивы для фильтрации элементов массива:
import numpy as np
arr = np.array([1, 2, 3, 4, 5])
mask = np.array([True, False, True, False, True])
print(arr[mask]) # Выводит [1, 3, 5] (выбирает элементы, соответствующие True)
5. Индексирование fancy indexing: Позволяет выбирать элементы массива, используя массив индексов:
import numpy as np
arr = np.array([10, 20, 30, 40, 50])
indices = np.array([1, 3, 4])
print(arr[indices]) # Выводит [20, 40, 50] (выбирает элементы с индексами 1, 3 и 4)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤5🔥4
1.Парсинг HTML и XML:
BeautifulSoup позволяет парсить HTML и XML документы, включая сложные структуры и вложенные элементы.
2. Извлечение данных:
Библиотека предоставляет инструменты для извлечения данных из HTML и XML, включая поисковые функции и фильтры.
3. Работа с тегами и атрибутами:
BeautifulSoup позволяет легко работать с тегами и атрибутами, включая добавление, удаление и изменение элементов.
4. Поддержка различных парсеров:
BeautifulSoup поддерживает несколько парсеров, включая html.parser, lxml и html5lib, что позволяет выбирать наиболее подходящий для ваших задач.
5. Интеграция с другими библиотеками:
BeautifulSoup легко интегрируется с другими библиотеками Python, такими как Requests, что позволяет создавать мощные веб-приложения.
from bs4 import BeautifulSoup
# HTML-документ
html_doc = """
<html>
<head>
<title>Пример страницы</title>
</head>
<body>
<h1>Заголовок</h1>
<p>Это пример веб-страницы.</p>
<a href="https://example.com">Ссылка</a>
</body>
</html>
"""
# Создание объекта BeautifulSoup
soup = BeautifulSoup(html_doc, 'html.parser')
# Извлечение заголовка
title = soup.title.string
print('Заголовок:', title)
# Извлечение всех абзацев
paragraphs = soup.find_all('p')
for p in paragraphs:
print('Абзац:', p.text)
# Извлечение ссылки
link = soup.find('a')['href']
print('Ссылка:', link)
Парсинг XML:
from bs4 import BeautifulSoup
# XML-документ
xml_doc = """
<root>
<item>
<name>Пример</name>
<value>123</value>
</item>
</root>
"""
# Создание объекта BeautifulSoup
soup = BeautifulSoup(xml_doc, 'xml')
# Извлечение всех элементов <item>
items = soup.find_all('item')
for item in items:
name = item.find('name').text
value = item.find('value').text
print(f'Имя: {name}, Значение: {value}')
Официальный сайт
GitHub
Документация
BeautifulSoup — это мощная библиотека для парсинга HTML и XML документов в Python. Она позволяет легко извлекать данные из веб-страниц, что делает ее идеальным инструментом для веб-скрапинга и анализа данных. BeautifulSoup легко интегрируется с другими библиотеками, такими как Requests, что позволяет создавать мощные веб-приложения. Благодаря простому и интуитивному API, BeautifulSoup легко использовать и интегрировать в ваши проекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8🔥4👍3
- Простой синтаксис: IceCream предоставляет простой и интуитивный синтаксис для вывода переменных и выражений.
- Автоматическое форматирование: IceCream автоматически форматирует вывод, делая его читаемым и понятным.
- Конфигурируемость: Вы можете настроить IceCream, указывая уровень детализации, формат вывода и другие параметры.
- Интеграция с другими библиотеками: IceCream легко интегрируется с другими библиотеками Python, такими как logging, что позволяет использовать его в существующих проектах.
- Поддержка различных сред: IceCream поддерживает вывод в консоль, файлы и другие среды, что делает его универсальным инструментом для отладки.
1. Вывод переменных:
from icecream import ic
# Пример переменных
a = 10
b = 20
# Вывод переменных с помощью IceCream
ic(a, b)
2. Вывод выражений:
from icecream import ic
# Пример выражения
result = a + b
# Вывод выражения с помощью IceCream
ic(result)
3. Конфигурация IceCream:
from icecream import ic
# Настройка уровня детализации
ic.configureOutput(includeContext=True)
# Вывод переменных с настройками
ic(a, b)
4. Использование IceCream в функциях:
from icecream import ic
def add(x, y):
result = x + y
ic(result)
return result
# Вызов функции
add(5, 7)
IceCream позволяет быстро выводить переменные и выражения, что делает ее идеальным инструментом для отладки кода, а благодаря простому и интуитивному API, IceCream легко использовать и интегрировать в ваши проекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥2
- Асинхронное выполнение задач: Celery позволяет выполнять задачи асинхронно, что позволяет вашему приложению оставаться отзывчивым и быстрым.
- Поддержка множества брокеров: Celery поддерживает множество брокеров сообщений, включая RabbitMQ, Redis, Amazon SQS и другие.
- Масштабируемость: Celery позволяет масштабировать обработку задач, добавляя дополнительные рабочие процессы или серверы.
- Переиспользование результатов: Celery позволяет сохранять результаты выполнения задач, что позволяет переиспользовать их в других частях вашего приложения.
- Обработка ошибок и повторные попытки: Celery предоставляет механизмы для обработки ошибок и повторных попыток выполнения задач, что делает ваше приложение более надежным.
- Интеграция с другими библиотеками: Celery легко интегрируется с другими библиотеками Python, такими как Flask, Django и Pyramid, что позволяет использовать его в существующих проектах.
1. Создание задачи:
from celery import Celery
# Создание экземпляра Celery
app = Celery('tasks', broker='redis://localhost:6379/0')
# Определение задачи
@app.task
def add(x, y):
return x + y
2. Выполнение задачи асинхронно:
# Выполнение задачи асинхронно
result = add.delay(4, 4)
# Получение результата
print(result.get()) # Вывод: 8
3. Использование Celery с Flask:
from flask import Flask
from celery import Celery
app = Flask(__name__)
celery = Celery(app.name, broker='redis://localhost:6379/0')
@celery.task
def process_data(data):
# Обработка данных
return data
@app.route('/process', methods=['POST'])
def process():
data = request.json
result = process_data.delay(data)
return jsonify({'task_id': result.id})
Официальный сайт
GitHub
Celery идеально подходит для обработки задач, которые требуют значительного времени выполнения, и легко интегрируется с другими библиотеками Python.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁3❤2🤣1
🤔9👍5🤨3
Если в функции нет явного return'a, то она возвращает None. В нашем случае —> None.
Сначала срабатывает принт, который в скобках —> он выводит 'lox'
Далее срабатывает принт наружный, который выдаст True или False на проверку сравнения print'a is None —>Что будет True
Итог: lox True
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤4🔥4
- Регулярное выполнение задач: Позволяет настроить запуск задач каждые несколько секунд, минут, часов или в определённые дни
- Интеграция с Django: В связке с django-celery-beat можно управлять расписанием через админ-панель или модели базы данных
- Гибкость расписания: Поддержка как фиксированных интервалов, так и расписаний по крону (cron-like schedules)
- Централизованное управление: Все задачи централизованно управляются из одного места — брокера сообщений (Redis, RabbitMQ и т.п.)
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. Легко масштабируется и поддерживает динамическое управление расписанием прямо из кода или через административный интерфейс.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤3🔥2
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 идеально подходит для создания интерактивных и динамических приложений, требующих мгновенного обновления данных. Благодаря простоте использования и гибкости.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤3🔥3🥰1
🤔10🤓3🤨2
x > y and x or yx = 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, и это значение выводится на экран.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🤯6❤3🔥2
- Простота использования: 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 позволяет писать простые и читаемые тесты, которые легко интегрируются с вашим кодом. Он поддерживает множество плагинов и расширений, что делает его идеальным инструментом для тестирования как небольших проектов, так и крупных приложений.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤5🔥3
- Поддержка цветов и отступов
- Простой и мощный столбцовый принтер
- Итераторный индикатор прогресса
- Неявная обработка аргументов
- Поддержка 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 подходит разработчикам, которые хотят быстро добавить форматирование текста и удобство в свои скрипты без тяжёлых зависимостей. Он предлагает множество функций, которые делают разработку более простой и эффективной.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7👍3🔥2
- Чтение и запись 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)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤4🔥2
- Интеграция с 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
Please open Telegram to view this post
VIEW IN TELEGRAM
👍10❤2🔥2
Что выдаст код выше❔
Anonymous Quiz
2%
{}
2%
<class 'dict'>
12%
dict(["AD", "OL", "QL"])
45%
{"AB": None, "OL": None, "QL": None}
26%
{'A': 'B', 'O': 'L', 'Q': 'N'}
14%
Error
🤔10🤷♀5👍3🤓1👀1
dict() работает так, что он либо ничего не принимает и возвращает {}, либо принимает список из списков ключ-значение.
Вот так:
[["key", "value"], ] -> {"key": "value",}
Но мы же знаем что строка тоже итерируется, следовательно первый символ строки становится ключом, а второй - значением. Так и выходит результат {'A': 'B', 'O': 'L', 'Q': 'N'}
Please open Telegram to view this post
VIEW IN TELEGRAM
❤21👍5⚡4🔥3