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

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

Канал на бирже: https://telega.in/c/pythonercode
Download Telegram
✈️Requests — это популярная библиотека Python для работы с HTTP-запросами. Она позволяет легко отправлять GET, POST, PUT, DELETE и другие типы запросов к веб-серверам, а также обрабатывать ответы в виде текста, JSON или байтов.

➡️Пример использования requests, отправка GET-запроса:
import requests

# Отправляем GET-запрос
response = requests.get("https://jsonplaceholder.typicode.com/posts/1")

# Проверяем статус код
if response.status_code == 200:
print("Успешный запрос!")
data = response.json() # Преобразуем ответ в JSON
print(data)
else:
print(f"Ошибка: {response.status_code}")


➡️Пример POST-запроса:
import requests

# Данные для отправки
payload = {
"title": "foo",
"body": "bar",
"userId": 1
}

# Отправляем POST-запрос
response = requests.post("https://jsonplaceholder.typicode.com/posts", json=payload)

# Обработка ответа
if response.status_code == 201:
print("Данные успешно созданы!")
print(response.json())
else:
print(f"Ошибка: {response.status_code}")


💡Requests — это незаменимый инструмент для работы с веб-сервисами и API в Python. Он делает взаимодействие с интернетом простым и эффективным.

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

➡️Пример использования PyInquirer. Создание простого интерактивного меню:
from PyInquirer import prompt

# Определение списка вопросов
questions = [
{
'type': 'list',
'name': 'action',
'message': 'Что вы хотите сделать?',
'choices': ['Добавить задачу', 'Удалить задачу', 'Выход']
},
{
'type': 'input',
'name': 'task',
'message': 'Введите название задачи:',
'when': lambda answers: answers['action'] == 'Добавить задачу'
}
]

# Отображение вопросов
answers = prompt(questions)

# Обработка ответов
if answers['action'] == 'Добавить задачу':
print(f"Задача '{answers['task']}' успешно добавлена!")
elif answers['action'] == 'Выход':
print("До свидания!")


⬆️Как работает этот код:
— Пользователь выбирает действие из списка (Добавить задачу, Удалить задачу или Выход).
— Если выбрано "Добавить задачу", пользователю предлагается ввести название задачи.
— В зависимости от выбора выводится соответствующее сообщение.

🔎Плюсы PyInquirer:
- Интерактивность: Легко создавать сложные диалоги с различными типами вопросов (выбор из списка, ввод текста, подтверждение и т.д.).

- Красивый вывод: Библиотека обеспечивает эстетичный и удобный интерфейс для пользователей.

- Гибкость: Возможность настраивать поведение вопросов через параметры, такие как when и filter.

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

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

➡️Пример использования Faker:
from faker import Faker

# Создаем объект Faker (с русским языком)
fake = Faker('ru_RU')

# Генерируем фейковые данные
name = fake.name() # Фейковое имя
address = fake.address() # Фейковый адрес
email = fake.email() # Фейковый email
text = fake.text() # Фейковый текст

# Выводим результаты
print(f"Имя: {name}")
print(f"Адрес: {address}")
print(f"Email: {email}")
print(f"Текст: {text}")


⬆️Результат:
Имя: Мария Иванова
Адрес: 123456, Москва, улица Ленина, дом 10, квартира 45
Email: maria.ivanova@example.com
Текст: Lorem ipsum dolor sit amet, consectetur adipiscing elit...


🔎Почему библиотека Faker полезна?

- Разнообразие данных: Поддерживает множество типов данных, включая имена, адреса, номера телефонов, даты, тексты и даже банковские счета.
- Локализация: Может генерировать данные на разных языках (включая русский).
- Простота использования: Легко интегрируется в проекты для быстрой генерации тестовых данных.
- Защита данных: Используйте Faker для замены реальных данных в тестовых средах, чтобы защитить конфиденциальную информацию.

➡️Синтетические данные для машинного обучения

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

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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍86🔥4
➡️Пример использования Blessings. Создание цветного вывода:
from blessings import Terminal

# Создаем объект терминала
term = Terminal()

# Используем цвета и стили
print(term.bold('Это жирный текст!'))
print(term.red_on_yellow('Красный текст на желтом фоне!'))
print(term.move_down + term.green('Текст ниже предыдущего!'))


➡️Пример позиционирование курсора:
from blessings import Terminal

term = Terminal()

# Перемещаем курсор в конкретную позицию
with term.location(10, 5): # (x=10, y=5)
print("Текст в определенной позиции!")

# Возвращаемся в конец вывода
print(term.move_down + "Конец программы.")


🔎Почему библиотека Blessings полезна?

- Простота: Легко добавлять цвета, стили и управление курсором без сложных escape-последовательностей.
- Кроссплатформенность: Работает одинаково хорошо на Linux, macOS и Windows (с использованием colorama).
- Читаемость кода: Аннотации, такие как term.bold или term.red, делают код более понятным и поддерживаемым.
- Минимальные зависимости: Библиотека легкая и не требует установки множества зависимостей.

💡Blessings — это отличный инструмент для разработчиков, которым нужно создавать красивые и интерактивные CLI-приложения. Она делает работу с терминалом приятной и удобной.

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

➡️Пример создания простой CLI-программы:
import click

# Основная команда
@click.command()
@click.option('--count', default=1, help='Количество приветствий.')
@click.option('--name', prompt='Введите ваше имя', help='Имя пользователя.')
def hello(count, name):
"""Простая программа для вывода приветствия若干 раз."""
for _ in range(count):
click.echo(f"Привет, {name}!")

if __name__ == '__main__':
hello()


⬆️Как работает этот код:
1. Пользователь запускает программу через терминал.
2. Программа предлагает ввести имя пользователя.
3. Выводит приветствие столько раз, сколько указано в параметре --count.

🔎Почему библиотека Click полезна?
- Простота: Легко создавать CLI-приложения с минимальными усилиями.
- Гибкость: Поддерживает параметры, аргументы, флаги и вложенные команды.
- Автоматическая справка: Автоматически генерирует справку для ваших команд.
- Кроссплатформенность: Работает одинаково хорошо на Linux, macOS и Windows.

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

🐍 Pythoner
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63🔥2
👍62🔥2
Что выдаст код выше
Anonymous Quiz
66%
2 3
3%
3 2
2%
1 2
3%
2 1
17%
2 4
9%
1 3
🤔9🤓5🤨43👍3👌1
🤔Разбор

В тексте переменной txt есть 4 буквы —> индекс последней —> [3]
Заходим в первый try, сразу же запрыгиваем во второй. Пробуем получить txt[5] —> не можем—> ошибку ловит except.
В except'e выводим число 2.

Далее выходим из внутреннего try-except'a и пытаемся получить txt[3] —> удачно —> на следующей строке выводим 3.

В except не заходим, так как все прошло успешно.
Ответ: 2 3


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