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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
🔥8👍3
Что выдаст код выше
Anonymous Quiz
41%
1 2 3
21%
3 3 3
14%
0 1 2
2%
3 2 1
23%
Error
👍83🤨3🤓1
🤔Разбор

Lambda-функции в списке захватывают переменную i из внешней области видимости , а не её значение на момент создания. После завершения цикла i становится равным 2 (последнее значение в range(3)).

Поэтому все функции используют i = 2, и результат для любого вызова funcs[n](1) будет 1 + 2 = 3.

Это типичная "ловушка" при работе с замыканиями в циклах.


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

➡️Пример использования генераторов для ленивых вычислений:
# Генератор для создания бесконечной последовательности чисел
def infinite_sequence():
num = 0
while True:
yield num
num += 1

# Использование генератора
seq = infinite_sequence()
print(next(seq)) # Вывод: 0
print(next(seq)) # Вывод: 1
print(next(seq)) # Вывод: 2


➡️Пример использования itertools для ленивых вычислений:
import itertools

# Создаем бесконечную последовательность четных чисел
even_numbers = itertools.count(0, 2)

# Берем первые 5 элементов из последовательности
first_five = itertools.islice(even_numbers, 5)
print(list(first_five)) # Вывод: [0, 2, 4, 6, 8]


🔎Почему ленивые вычисления важны?
- Экономия памяти: Вместо хранения всех данных в памяти, генераторы создают их по мере необходимости.

- Оптимизация производительности: Нет необходимости выполнять лишние вычисления, если результат не понадобится.

- Обработка больших данных: Ленивые вычисления позволяют работать с огромными наборами данных, которые не помещаются в память.

- Чистый код: Генераторы и ленивые вычисления делают код более читаемым и поддерживаемым.

💡Заключение
Ленивые вычисления — это мощный инструмент для оптимизации программ в Python. Они помогают эффективно использовать ресурсы и работать с большими объемами данных.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍74🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
😁20👍3💯3🤔1
✈️igraph — это популярная библиотека для анализа и визуализации графов, которая доступна как для Python, так и для других языков программирования (R, C). Она позволяет исследовать сложные сети, такие как социальные графы, транспортные системы, веб-сайты и многое другое. Благодаря своей эффективности и гибкости, igraph стал одним из основных инструментов для работы с данными в виде графов.

➡️Основные возможности igraph — генерация случайных и классических графов, вычисление различных метрик (степени вершин, диаметра графа и т. д.), поиск сообществ и кластеров.

➡️Пример создания простого графа:
import igraph as ig

# Создаем граф
graph = ig.Graph()

# Добавляем вершины
graph.add_vertices(5)

# Добавляем ребра
graph.add_edges([(0, 1), (1, 2), (2, 3), (3, 4), (4, 0)])

# Визуализируем граф
ig.plot(graph, vertex_label=range(graph.vcount()), vertex_color="lightblue", edge_width=2)


➡️Пример анализа графа:
import igraph as ig

# Создаем граф
graph = ig.Graph.Tree(10, 2) # Дерево с 10 узлами и ветвлением 2

# Получаем характеристики графа
print("Количество вершин:", graph.vcount()) # Вывод: 10
print("Количество ребер:", graph.ecount()) # Вывод: 9
print("Степень каждой вершины:", graph.degree()) # Вывод: [2, 3, 3, 1, 1, 1, 1, 1, 1, 1]

# Находим диаметр графа
diameter = graph.diameter()
print("Диаметр графа:", diameter)


➡️Некоторые особенности Python-igraph:

— Подходит для анализа графов среднего и большого размера
— Делает акцент на производительности и эффективности использования памяти
— Поддерживает направленные и ненаправленные графы, взвешенные графы
— Имеет богатый набор алгоритмов компоновки
— Интегрируется с популярными библиотеками Python для науки о данных, такими как NumPy и Pandas. 3

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

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

➡️Основные понятия TensorFlow
- Тензоры: Многомерные массивы, аналогичные массивам NumPy. Они являются основными элементами, с которыми работает TensorFlow.

- Операции: Функции, которые выполняют вычисления над тензорами.

- Переменные: Значения, которые изменяются в процессе обучения модели.

- Граф вычислений: TensorFlow использует графы для представления математических операций. Каждый узел графа представляет операцию, а ребра — данные (тензоры), передающиеся между операциями.

➡️Построение первой нейронной сети

1.Загрузка данных:
TensorFlow позволяет легко загружать и предобрабатывать данные. В примере ниже мы используем набор данных MNIST, который часто используется для обучения систем обработки изображений:
import tensorflow as tf
from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0


2.Определение модели:
Мы используем API Keras, интегрированный в TensorFlow, для определения нашей нейронной сети:
model = tf.keras.models.Sequential([
tf.keras.layers.Flatten(input_shape=(28, 28)),
tf.keras.layers.Dense(128, activation='relu'),
tf.keras.layers.Dropout(0.2),
tf.keras.layers.Dense(10, activation='softmax')
])


3.Компиляция модели:

Затем мы компилируем модель, указывая оптимизатор, функцию потерь и метрики:
model.compile(optimizer='adam',
loss='sparse_categorical_crossentropy',
metrics=['accuracy'])


4.Обучение модели:
Обучаем модель с использованием обучающих данных:
model.fit(x_train, y_train, epochs=5)


5.Оценка модели:
Наконец, оцениваем модель с использованием тестовых данных:
model.evaluate(x_test, y_test)


💡Заключение
TensorFlow в Python — это мощный инструмент для создания моделей машинного обучения. Независимо от того, являетесь ли вы начинающим или опытным разработчиком, обширная экосистема и надежные функции TensorFlow делают его ценным инструментом в вашем арсенале искусственного интеллекта.

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

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

— Путь доступа к данным: Glom позволяет использовать пути для доступа к вложенным данным, например, a.b.c.

— Объявление преобразований данных: Glom предоставляет инструменты для преобразования данных с помощью лёгких и понятных спецификаций.

— Читаемые сообщения об ошибках: Glom предоставляет читаемые сообщения об ошибках, чтобы помочь вам быстро найти и исправить проблемы.

— Встроенная отладка: Glom предоставляет инструменты для отладки, чтобы помочь вам быстро найти и исправить проблемы.

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

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

1.Доступ к данным:
from glom import glom

# Пример данных
data = {'a': {'b': {'c': 'd'}}}

# Доступ к данным с помощью пути
result = glom(data, 'a.b.c') # Вернёт 'd'
print(result)


2.Обработка вложенных списков:
# Пример данных
data = {'a': [{'k': 'v1'}, {'k': 'v2'}]}

# Доступ к данным в вложенных списках с помощью шаблона
result = glom(data, 'a.*.k') # Вернёт ['v1', 'v2']
print(result)


3.Преобразование данных. Glom позволяет не только получать данные, но и преобразовывать их:
# Пример данных
data = {'a': {'b': 'c', 'd': 'e'}, 'f': 'g', 'h': [0, 1, 2]}

# Определение спецификации преобразования
spec = {'a': 'a.b', 'd': 'a.d', 'h': ('h', [lambda x: x * 2])}

# Применение спецификации преобразования
output = glom(data, spec)
print(output) # Вывод {'a': 'c', 'd': 'e', 'h': [0, 2, 4]}


4.Обработка ошибок. Glom предоставляет читаемые сообщения об ошибках, что позволяет быстро находить и исправлять проблемы:
# Пример данных
data = {'a': {'b': None}}

# Попытка доступа к несуществующему пути
try:
result = glom(data, 'a.b.c')
except Exception as e:
print(e) # Вывод сообщения об ошибке


Документация glom
Руководство по glom

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

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

➡️Основные возможности
Boltons содержит множество модулей, каждый из которых специализируется на определенной области функциональности. Вот некоторые ключевые модули и возможности:

1. iterutils:
Утилиты для работы с итераторами и итерируемыми объектами, включая расширенные инструменты itertools и шаблоны итерирования.

2. strutils:
Дополнительные инструменты для работы со строками, такие как расширенная интерполяция, форматирование текста и заполнение.

3. fileutils:
Утилиты для работы с файлами и каталогами, включая итерацию по файлам, атомарное сохранение файлов и операции с деревьями каталогов.

4. datetimeutils:
Расширенные инструменты для работы с датами и временем, включая более гибкие возможности парсинга и форматирования, работу с часовыми поясами и операции с
timedelta.

5. funcutils:
Утилиты для работы с функциями, такие как композиция функций, декораторы кэширования и валидации аргументов.

6. cacheutils:
Утилиты для кэширования, такие как LRU-кэш.

7. dictutils:
Расширенные инструменты для работы со словарями, такие как OrderedMultiDict.

8. queueutils:
Утилиты для работы с очередями, такие как PriorityQueue.

9. tbutils:
Утилиты для работы с трассировками стека, такие как тип TracebackInfo, который упрощает отладку и отчёты об исключениях.

➡️Пример использования
from boltons.dictutils import OMD

# OrderedMultiDict — словарь, сохраняющий порядок и поддерживающий дубликаты ключей
data = OMD()
data.add('status', 'ok')
data.add('status', 'warning')

print(data.getlist('status')) # ['ok', 'warning']


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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍53🔥2
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17😁9🤣7👌1
👍62
Что выдаст код выше
Anonymous Quiz
9%
3 1
58%
3 2
10%
3 3
23%
Error
😢83🤔2👍1🤨1
🤔Разбор

Атрибуты класса (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