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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
🤔Разбор

Атрибуты класса (count) являются общими для всех экземпляров класса.
Метод __del__ вызывается автоматически, когда объект уничтожается (например, после выполнения del или когда программа завершается).
Если объект больше не имеет ссылок, он удаляется сборщиком мусора, и вызывается деструктор.


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

⚡️Основные возможности Astropy:

- Управление временем и датами: Astropy предоставляет инструменты для работы с астрономическим временем, включая преобразование между различными временными шкалами и форматами.

- Координатные системы: Библиотека позволяет работать с астрономическими координатами, включая преобразование между различными системами координат (например, экваториальными, эклиптическими и галактическими).

- Обработка изображений: Astropy включает инструменты для чтения, записи и обработки астрономических изображений, включая поддержку формата FITS (Flexible Image Transport System).

- Анализ спектров: Библиотека предоставляет функции для анализа астрономических спектров, включая измерение линий спектра и расчет физических параметров.

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

- Интеграция с другими библиотеками: Astropy интегрируется с другими популярными библиотеками Python, такими как NumPy, SciPy, Matplotlib и Pandas, что позволяет создавать мощные астрономические приложения.

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

1.Работа с временем:
from astropy.time import Time

# Создание объекта времени
t = Time('2023-10-10 12:00:00', format='iso', scale='utc')

# Преобразование времени в другой формат
print(t.jd) # Вывод времени в формате Julian Date


2.Работа с координатами:
from astropy.coordinates import SkyCoord
from astropy import units as u

# Создание объекта координат
c = SkyCoord(ra=10.68458*u.degree, dec=41.26917*u.degree, frame='icrs')

# Преобразование координат в другую систему
print(c.galactic) # Вывод координат в галактической системе


3.Анализ спектров:
from astropy import units as u
from astropy.modeling import models, fitting

# Создание спектра
wavelength = [400, 500, 600, 700] * u.nm
flux = [1, 2, 3, 4] * u.Jy

# Подгонка модели к спектру
model = models.Gaussian1D(amplitude=2*u.Jy, mean=500*u.nm, stddev=50*u.nm)
fitter = fitting.LevMarLSQFitter()
fitted_model = fitter(model, wavelength, flux)

# Вывод параметров модели
print(fitted_model)


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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥2
✈️Сегодня разберём тему, которая частенько вызывает головную боль даже у опытных разработчиков — области видимости переменных и ключевые слова global и nonlocal.

➡️В чём суть?
Представьте, что вы пишете функцию внутри функции и вам нужно изменить переменную "снаружи". Без special words Python скажет: "Неа, не получится!"

➡️Как это работает?
Global:
x = 5  # глобальная переменная

def change_x():
global x # говорим Python, что хотим менять глобальную x
x = 10 # теперь работает!

change_x()
print(x) # выведет 10


Nonlocal:
def outer():
counter = 0 # переменная внешней функции

def inner():
nonlocal counter # хотим менять counter из outer
counter += 1 # работает!

inner()
print(counter) # выведет 1

outer()


⚡️Важные моменты:

- Global можно использовать для создания новых переменных
- Nonlocal работает только с существующими переменными
- В Python 3.13 пофиксили баги с global в блоках else и except

➡️Типичные ошибки:
Неправильно:
def bad_function():
print(x) # ошибка!
global x # global нужно объявлять до использования
x = 10


Правильно:
def good_function():
global x
print(x) # теперь всё ок
x = 10


➡️Полезные инструменты:
Чтобы проверить, какие переменные у вас есть:
print(globals())  # все глобальные переменные
print(locals()) # все локальные переменные


💡Практические советы:

- Используйте global только когда действительно необходимо
- Nonlocal отлично подходит для счетчиков и аккумуляторов
- Всегда документируйте использование global и nonlocal в комментариях
- Старайтесь минимизировать использование глобальных переменных

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

➡️Основные возможности SymPy:

1.Символьные переменные и выражения:
SymPy позволяет создавать символьные переменные и выполнять операции с ними, не присваивая им конкретных числовых значений.

2.Алгебра:
SymPy предоставляет инструменты для работы с алгебраическими выражениями, включая упрощение, разложение и факторинг.

3.Исчисление:
SymPy поддерживает дифференцирование, интегрирование, пределы и ряды Тейлора.

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

5.Решение уравнений:
SymPy предоставляет инструменты для решения алгебраических и дифференциальных уравнений.

6.Графики:
SymPy интегрируется с Matplotlib для визуализации математических функций и выражений.

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

1.Создание символьных переменных и выражений:
from sympy import symbols, sin, cos

# Создание символьных переменных
x, y = symbols('x y')

# Создание выражения
expr = sin(x) + cos(y)

# Вывод выражения
print(expr)


2.Работа с матрицами:
from sympy import Matrix

# Создание матрицы
A = Matrix([[1, 2], [3, 4]])

# Вычисление определителя
det_A = A.det()
print('Определитель матрицы A:', det_A)

# Решение системы линейных уравнений
B = Matrix([1, 2])
solutions = A.solve(B)
print('Решение системы уравнений:', solutions)


➡️Документация и дополнительные ресурсы:

Официальный сайт

GitHub

Документация

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥2
👍9
🤔14🤓6🤨3👍21
🤔Разбор

Важно знать, что (2) —> просто 2. (2,) —> кортеж с элементом 2
В круглых скобках запятая сильно решает.

Умножая 'a' * 2 —> 'aa'
Список всегда список, поэтому b —> ['b', 'b']

Ну и f-строка выведет это все, предварительно отформатировав в текст.


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
13👍8🔥8
➡️NumPy (Numerical Python) - это библиотека Python, которая предоставляет поддержку для работы с многомерными массивами и эффективными математическими функциями. В NumPy индексы используются для доступа к элементам массива. В NumPy существует несколько способов индексации массивов:

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)


⬆️Это основные методы индексации в NumPy, которые помогут вам эффективно работать с массивами и многомерными данными в Python. NumPy предоставляет мощные средства работы с данными и вычислениями, особенно в области научных вычислений и анализа данных.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍75🔥4
✈️BeautifulSoup — это мощная библиотека Python для парсинга HTML и XML документов. Она предоставляет инструменты для извлечения данных из веб-страниц, что делает ее идеальным инструментом для веб-скрапинга и анализа данных. BeautifulSoup легко интегрируется с другими библиотеками, такими как Requests, что позволяет создавать мощные веб-приложения.

➡️Основные возможности BeautifulSoup:

1.Парсинг HTML и XML:
BeautifulSoup позволяет парсить HTML и XML документы, включая сложные структуры и вложенные элементы.

2. Извлечение данных:
Библиотека предоставляет инструменты для извлечения данных из HTML и XML, включая поисковые функции и фильтры.

3. Работа с тегами и атрибутами:
BeautifulSoup позволяет легко работать с тегами и атрибутами, включая добавление, удаление и изменение элементов.

4. Поддержка различных парсеров:
BeautifulSoup поддерживает несколько парсеров, включая html.parser, lxml и html5lib, что позволяет выбирать наиболее подходящий для ваших задач.

5. Интеграция с другими библиотеками:
BeautifulSoup легко интегрируется с другими библиотеками Python, такими как Requests, что позволяет создавать мощные веб-приложения.

➡️Примеры использования. Парсинг HTML:
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 легко использовать и интегрировать в ваши проекты.

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

➡️Основные возможности IceCream:

- Простой синтаксис: 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 легко использовать и интегрировать в ваши проекты.

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

➡️Основные возможности Celery:
- Асинхронное выполнение задач: 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.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍94🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12😁32🤣1
😁8👍7👀3
Что выдаст код выше
Anonymous Quiz
15%
True
28%
False
14%
lox False
18%
lox True
7%
lox
19%
Error
🤔9👍5🤨3
🤔Разбор

print - тоже функция. Как мы знаем - любая функция в Python возвращает какое-то значение.
Если в функции нет явного return'a, то она возвращает None. В нашем случае —> None.

Сначала срабатывает принт, который в скобках —> он выводит 'lox'
Далее срабатывает принт наружный, который выдаст True или False на проверку сравнения print'a is None —>Что будет True

Итог: lox True


🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍184🔥4
✈️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