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

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

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

➡️Пример использования Tqdm. Простой прогресс-бар:
from tqdm import tqdm
import time

# Имитация долгой операции
for i in tqdm(range(100)):
time.sleep(0.05) # Задержка для имитации работы


➡️Пример прогресс-бара для обработки файлов:
from tqdm import tqdm
import os

# Список файлов в директории
directory = "my_directory"
files = os.listdir(directory)

# Обработка файлов с прогресс-баром
for file in tqdm(files, desc="Обработка файлов"):
# Имитация обработки файла
time.sleep(0.1)


👀Плюсы:
- Простота интеграции: Достаточно обернуть ваш код в tqdm(), чтобы добавить прогресс-бар.
- Кастомизация: Возможность настраивать внешний вид прогресс-бара (текст, цвета, символы и т.д.).
- Многозадачность: Поддерживает работу с многопоточными и асинхронными программами.
- Универсальность: Может использоваться с любыми итерируемыми объектами, такими как списки, генераторы или даже файловые потоки.

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

➡️Пример использования Joblib. Сохранение и загрузка данных:
import joblib

# Исходные данные
data = {
"name": "Alice",
"age": 30,
"skills": ["Python", "Data Science", "Machine Learning"]
}

# Сохраняем данные в файл
joblib.dump(data, 'data.joblib')
print("Данные успешно сохранены!")

# Загружаем данные из файла
loaded_data = joblib.load('data.joblib')
print("Загруженные данные:")
print(loaded_data)


➡️Пример параллельной обработки:
from joblib import Parallel, delayed
import math

# Функция для вычисления квадратного корня
def sqrt(x):
return math.sqrt(x)

# Список чисел
numbers = list(range(1, 21))

# Выполняем вычисления параллельно
results = Parallel(n_jobs=-1)(delayed(sqrt)(num) for num in numbers)

print("Результаты вычислений:")
print(results)


➡️Некоторые преимущества использования Joblib:
- Простота: Joblib упрощает код и скрывает множество деталей, связанных с многозадачностью.
- Меньше накладных расходов: Для некоторых операций Joblib может быть быстрее, чем использование дефолтных механизмов Python (например, multiprocessing).
- Меньше кода: Joblib позволяет распараллелить вычисления с минимальными усилиями.

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

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

➡️Преимущества модульного программирования:
- Читаемость: Разделение кода на модули делает его легче для понимания и чтения.

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

- Тестированиe: Независимые модули проще тестировать, так как их можно проверять изолированно.

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

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

➡️Пример cоздания модуля для работы с числами:
# numbers.py (модуль)
def is_even(number):
"""Проверяет, является ли число четным."""
return number % 2 == 0

def square(number):
"""Возвращает квадрат числа."""
return number ** 2


➡️Использование модуля в основном файле:
# main.py (основной файл)
import numbers

user_input = int(input("Введите число: "))

if numbers.is_even(user_input):
print(f"{user_input} — четное число.")
else:
print(f"{user_input} — нечетное число.")

print(f"Квадрат числа {user_input} равен {numbers.square(user_input)}.")


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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥3
Forwarded from IT memer
Please open Telegram to view this post
VIEW IN TELEGRAM
23👍7🔥4🤣3
✈️Виртуальное окружение — это изолированное пространство для вашего проекта, где вы можете устанавливать необходимые зависимости без конфликтов с другими проектами. Это особенно важно при работе над несколькими проектами, каждый из которых требует разных версий библиотек.

➡️Почему нужны виртуальные окружения?

- Изолирование зависимостей: Каждый проект имеет свои зависимости, и виртуальное окружение помогает избежать конфликтов между ними.

- Упрощение управления: Легко воспроизводить окружение на других компьютерах или передавать его коллегам.

- Чистота системы: Основная система остается чистой, так как все зависимости остаются внутри виртуального окружения.

➡️Создание и использование виртуального окружения:
# Установка модуля venv (если еще не установлено)
python -m venv myenv # Создание виртуального окружения с именем "myenv"

# Активация виртуального окружения
# Для Windows:
myenv\Scripts\activate
# Для macOS/Linux:
source myenv/bin/activate

# Установка зависимостей
pip install requests numpy pandas

# Фиксация зависимостей в файл requirements.txt
pip freeze > requirements.txt

# Установка зависимостей из файла requirements.txt
pip install -r requirements.txt

# Деактивация виртуального окружения
deactivate


💡Заключение
Виртуальные окружения — это важный инструмент для каждого разработчика Python. Они помогают поддерживать проекты в порядке и избегать проблем с зависимостями.

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍125🔥2
👍7
Что выдаст код выше
Anonymous Quiz
40%
[1] и [2]
45%
[1] и [1,2]
5%
[1,2] и [1,2]
1%
[2] и [2]
9%
Error
👍9🤔4🤨21
🤔Разбор

Список lst по умолчанию создается один раз при определении функции, а не при каждом вызове.
Поэтому при первом вызове add_to_list(1) список становится [1], а при втором вызове add_to_list(2) к тому же списку добавляется 2, итог — [1, 2].

Это классическая ловушка с изменяемыми аргументами по умолчанию в Python.


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

➡️Пример реализации алгоритма сортировки. Сортировка пузырьком:
def bubble_sort(arr):
"""Сортировка пузырьком."""
n = len(arr)
for i in range(n):
for j in range(0, n - i - 1):
if arr[j] > arr[j + 1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
return arr

# Пример использования
data = [64, 34, 25, 12, 22, 11, 90]
sorted_data = bubble_sort(data)
print("Отсортированный массив:", sorted_data)


➡️Пример реализации более эффективного алгоритма (Quick Sort):
def quick_sort(arr):
"""Быстрая сортировка."""
if len(arr) <= 1:
return arr
else:
pivot = arr[0]
less = [x for x in arr[1:] if x <= pivot]
greater = [x for x in arr[1:] if x > pivot]
return quick_sort(less) + [pivot] + quick_sort(greater)

# Пример использования
data = [64, 34, 25, 12, 22, 11, 90]
sorted_data = quick_sort(data)
print("Отсортированный массив:", sorted_data)


🔎Почему важно знать алгоритмы сортировки?

- Эффективность: Разные алгоритмы имеют разную сложность (например, O(n²) для пузырьковой сортировки и O(n log n) для быстрой сортировки), что влияет на производительность.

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

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

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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥83👍2
🔥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