Привет! С вами Иван, и сегодня мы разберём тему, которой часто пренебрегают новички: качество оформления кода. Возможно, вы слышали о загадочном PEP8 и модуле black, но пока не решались познакомиться поближе? Тогда устраивайтесь поудобнее — сейчас разберём всё на пальцах.
## Что такое PEP8?
PEP8 — это официальный стиль написания кода на Python. Или, проще говоря, набор рекомендаций, как писать код понятно не только себе, но и другим. Вот некоторые ключевые моменты:
- отступы: только 4 пробела;
- длина строк: лучше укладываться в 79 символов;
- имена переменных:
- между функциями — две пустых строки, между методами — одна.
Пример «неправильного» кода:
И вот так — по PEP8:
Лаконично, читаемо — и глаз радуется.
## Форматируем код автоматически: знакомство с black
В мире, где приходится работать с десятками файлов, перебирать пробелы вручную — путь для мазохистов. Здесь на сцену выходит black — грозный (и очень полезный) автоформаттер кода.
### Установка
Black ставится одной командой:
### Использование
Форматируем файлы или целые проекты:
Black сам поправит отступы, длину строк, расставит пробелы. Причём форматирование очень строгое: порядка больше, споров меньше! Вот пример до и после:
после команды
## Почему это важно?
Чистый код читается легче, поддерживается быстрее, и экономит время вашей команды. Придерживаясь PEP8 и используя инструменты вроде black, вы быстро привьёте себе привычку писать не только рабочий, но и красивый Python-код.
На сегодня всё, до встречи в новых постах!
## Что такое PEP8?
PEP8 — это официальный стиль написания кода на Python. Или, проще говоря, набор рекомендаций, как писать код понятно не только себе, но и другим. Вот некоторые ключевые моменты:
- отступы: только 4 пробела;
- длина строк: лучше укладываться в 79 символов;
- имена переменных:
snake_case, никаких camelCase;- между функциями — две пустых строки, между методами — одна.
Пример «неправильного» кода:
def addNumbers(a,b): return a+b
И вот так — по PEP8:
def add_numbers(a, b):
return a + b
Лаконично, читаемо — и глаз радуется.
## Форматируем код автоматически: знакомство с black
В мире, где приходится работать с десятками файлов, перебирать пробелы вручную — путь для мазохистов. Здесь на сцену выходит black — грозный (и очень полезный) автоформаттер кода.
### Установка
Black ставится одной командой:
pip install black
### Использование
Форматируем файлы или целые проекты:
black my_script.py
Black сам поправит отступы, длину строк, расставит пробелы. Причём форматирование очень строгое: порядка больше, споров меньше! Вот пример до и после:
def fibonacci(n): a, b = 0, 1; result = []
for _ in range(n): result.append(a); a, b = b, a+b
return result
после команды
black:def fibonacci(n):
a, b = 0, 1
result = []
for _ in range(n):
result.append(a)
a, b = b, a + b
return result
## Почему это важно?
Чистый код читается легче, поддерживается быстрее, и экономит время вашей команды. Придерживаясь PEP8 и используя инструменты вроде black, вы быстро привьёте себе привычку писать не только рабочий, но и красивый Python-код.
На сегодня всё, до встречи в новых постах!
👍3🔥2
Привет! На связи Иван, и сегодня разберём одну из самых интересных фишек современного Python — асинхронное программирование с помощью модуля
## Почему именно asyncio?
Обычные (синхронные) функции скачивают данные поочерёдно: началась загрузка — жди, пока закончится. А вот с
## Первый шаг: Корутинa и event loop
Всё строится вокруг корутин (функций с
## Разбираем пример:
-
-
-
- Результаты появляются, когда всё скачалось.
## Ещё парочка лайфхаков
1. IO-операции (HTTP-запросы, чтение файлов) лучше всего подходят для асинхронного подхода.
2. Используй aiohttp или другие async-библиотеки — работать с обычным requests тут нельзя.
3. Не забывай про
Вот так, всего пара строк — и твой Python-код работает в разы быстрее там, где раньше скучал, глядя на загрузку одного URL за другим! Попробуй — и почувствуй разницу.
До встречи, Иван.
asyncio. Если тебе надоело ждать, пока твой скрипт скачает десяток страниц одну за другой, значит, самое время освоить новый подход!## Почему именно asyncio?
Обычные (синхронные) функции скачивают данные поочерёдно: началась загрузка — жди, пока закончится. А вот с
asyncio мы можем делать несколько запросов одновременно, не блокируя выполнение программы! Это особенно круто, когда надо работать с большим количеством сетевых ресурсов.## Первый шаг: Корутинa и event loop
Всё строится вокруг корутин (функций с
async def) и главного цикла событий — event loop. Вот как можно скачать сразу несколько страниц (например, с помощью aiohttp):import asyncio
import aiohttp
async def fetch_page(session, url):
async with session.get(url) as response:
return await response.text()
async def main():
urls = [
"https://example.com",
"https://httpbin.org/get",
"https://python.org"
]
async with aiohttp.ClientSession() as session:
tasks = [fetch_page(session, url) for url in urls]
results = await asyncio.gather(*tasks)
for i, html in enumerate(results):
print(f"Page {i+1} downloaded, length: {len(html)}")
asyncio.run(main())
## Разбираем пример:
-
async def fetch_page — корутина, которая асинхронно скачивает страницу.-
session.get(url) внутри асинхронного контекста. Нет блокировки на сеть!-
asyncio.gather(*tasks) — запускает сразу несколько загрузок; программа ждёт, когда все завершатся.- Результаты появляются, когда всё скачалось.
## Ещё парочка лайфхаков
1. IO-операции (HTTP-запросы, чтение файлов) лучше всего подходят для асинхронного подхода.
2. Используй aiohttp или другие async-библиотеки — работать с обычным requests тут нельзя.
3. Не забывай про
async with — он гарантирует правильное закрытие соединения.Вот так, всего пара строк — и твой Python-код работает в разы быстрее там, где раньше скучал, глядя на загрузку одного URL за другим! Попробуй — и почувствуй разницу.
До встречи, Иван.
👍1
Привет! Сегодня погрузимся в магию работы с текстами на Python и разберём сразу два популярных инструмента для обработки естественного языка — NLTK и spaCy. Даже если вы только начали путь питониста, с этими библиотеками вы сможете анализировать тексты, искать ключевые слова, определять части речи и делать ещё массу интересного.
### NLTK — классика жанра
NLTK (Natural Language Toolkit) часто называют «швейцарским ножом» для языкового анализа. Несмотря на почтенный возраст, NLTK актуален благодаря богатейшему набору функций и огромному количеству встроенных корпусов (наборов текстов для анализа).
Разберём простой пример — разбор текста на предложения и слова:
NLTK также умеет определять части речи:
### spaCy — быстрый и современный
Если вам нужен максимально быстрый и удобный инструмент — берите spaCy. Он из коробки умеет извлекать сущности, токенизировать текст, разбивать слова по частям речи и много чего ещё, причём делает это молниеносно.
Пример выделения именованных сущностей (людей, компаний, городов):
Ещё spaCy великолепно разбирается с лемматизацией (приведение слова к базовой форме):
### Что выбрать?
NLTK — хороший выбор для обучения, экспериментов и когда нужен гибкий доступ к лингвистическим инструментам. spaCy — чемпион по скорости и простоте для реальных приложений. К тому же их можно комбинировать: например, токенизацию делать в spaCy, а сложную работу с корпусами доверить NLTK.
С текстами в Python можно творить чудеса, и знакомство с этими библиотеками — отличное начало. Удачной практики!
— Иван
### NLTK — классика жанра
NLTK (Natural Language Toolkit) часто называют «швейцарским ножом» для языкового анализа. Несмотря на почтенный возраст, NLTK актуален благодаря богатейшему набору функций и огромному количеству встроенных корпусов (наборов текстов для анализа).
Разберём простой пример — разбор текста на предложения и слова:
import nltk
nltk.download('punkt')
text = "Python is great. Natural Language Processing is fascinating!"
sentences = nltk.sent_tokenize(text)
words = [nltk.word_tokenize(sentence) for sentence in sentences]
print(sentences)
print(words)
NLTK также умеет определять части речи:
nltk.download('averaged_perceptron_tagger')
tokens = nltk.word_tokenize("SpaCy is faster than NLTK in many tasks.")
pos_tags = nltk.pos_tag(tokens)
print(pos_tags)
### spaCy — быстрый и современный
Если вам нужен максимально быстрый и удобный инструмент — берите spaCy. Он из коробки умеет извлекать сущности, токенизировать текст, разбивать слова по частям речи и много чего ещё, причём делает это молниеносно.
Пример выделения именованных сущностей (людей, компаний, городов):
import spacy
nlp = spacy.load("en_core_web_sm")
doc = nlp("Apple is looking at buying U.K. startup for $1 billion")
for ent in doc.ents:
print(ent.text, ent.label_)
Ещё spaCy великолепно разбирается с лемматизацией (приведение слова к базовой форме):
for token in doc:
print(token.text, token.lemma_)
### Что выбрать?
NLTK — хороший выбор для обучения, экспериментов и когда нужен гибкий доступ к лингвистическим инструментам. spaCy — чемпион по скорости и простоте для реальных приложений. К тому же их можно комбинировать: например, токенизацию делать в spaCy, а сложную работу с корпусами доверить NLTK.
С текстами в Python можно творить чудеса, и знакомство с этими библиотеками — отличное начало. Удачной практики!
— Иван
👍1
Привет, друзья! С вами Иван, и сегодня я расскажу о мощном модуле shutil, который позволяет управлять файлами и папками в Python буквально в пару строк. Готовы почувствовать себя повелителями файловой системы? Тогда поехали!
### Копирование папок и файлов
Если вы хотите скопировать файл — используйте
Стоит учитывать:
А вот просто скопировать файл – элементарно:
### Перемещение объектов
Иногда нужно не копировать, а переместить файл или целую папку – тут поможет
Путь назначения может быть и на другом диске! Всё работает и для Unix, и для Windows.
### Удаление папок
Удалять папки вручную – не вариант, если их много. В этом случае
ВАЖНО: Эта команда не спрашивает подтверждения — всё удаляется навсегда, так что лучше дважды проверять путь, чтобы затем не восстанавливать данные слезами.
### Быстрый итого
- copy — копирует файлы.
- copytree — копирует папки (и их содержимое).
- move — перемещает любые объекты файловой системы.
- rmtree — безжалостно удаляет целые папки.
shutil — незаменимый инструмент для данных админ-скриптов, резервного копирования или просто наведения порядка у себя на диске с помощью Python. Простота и мощь – вот почему я обожаю этот модуль!
Увидимся в следующих постах, где разберём ещё больше секретных приемов из арсенала Python!
### Копирование папок и файлов
Если вы хотите скопировать файл — используйте
shutil.copy, а вот для папок, в том числе с вложенными подкаталогами, пригодится shutil.copytree:import shutil
# Копирование папки с содержимым
shutil.copytree('source_folder', 'destination_folder')
Стоит учитывать:
destination_folder не должен существовать, иначе будет исключение.А вот просто скопировать файл – элементарно:
shutil.copy('original.txt', 'copy.txt')
### Перемещение объектов
Иногда нужно не копировать, а переместить файл или целую папку – тут поможет
shutil.move. Причём модуль сам определит, файл вы перемещаете или папку.shutil.move('old_folder', 'new_folder_location/old_folder')
Путь назначения может быть и на другом диске! Всё работает и для Unix, и для Windows.
### Удаление папок
Удалять папки вручную – не вариант, если их много. В этом случае
shutil.rmtree сотрёт весь каталог с файлами и подпапками:shutil.rmtree('unnecessary_folder')
ВАЖНО: Эта команда не спрашивает подтверждения — всё удаляется навсегда, так что лучше дважды проверять путь, чтобы затем не восстанавливать данные слезами.
### Быстрый итого
- copy — копирует файлы.
- copytree — копирует папки (и их содержимое).
- move — перемещает любые объекты файловой системы.
- rmtree — безжалостно удаляет целые папки.
shutil — незаменимый инструмент для данных админ-скриптов, резервного копирования или просто наведения порядка у себя на диске с помощью Python. Простота и мощь – вот почему я обожаю этот модуль!
Увидимся в следующих постах, где разберём ещё больше секретных приемов из арсенала Python!
👍1
Привет! С вами Иван, и сегодня мы поговорим о том, как легко и просто реализовать структуру данных “очередь” и “стек” с помощью модуля
## Почему именно deque?
В Python списки (
## Реализуем очередь
Очередь — это структура данных, работающая по принципу FIFO (First-In, First-Out, “первым пришёл — первым ушёл”). Давайте посмотрим, как можно буквально в пару строк сделать простейшую очередь:
Здесь всё интуитивно ясно:
## А теперь стек
А вот стек — это LIFO (Last-In, First-Out, “последним пришёл — первым ушёл”). Реализуется он не менее просто:
Для стека используйте методы
## Немного тонкостей
-
- Можно задавать максимальную длину очереди (
-
## Итого
Использовать стандартный модуль collections и класс deque — отличный способ писать лаконичный, быстрый и читаемый код для очередей и стеков. Основная прелесть — минимум кода и максимум эффективности, а всё самое “магическое” спрятано внутри самой стандартной библиотеки Python.
Экспериментируйте с
collections, а точнее — с использованием класса deque. Если вдруг вы еще не знакомы с этим классом, самое время это исправить!## Почему именно deque?
В Python списки (
list) отлично подходят для многих задач, но если вы часто добавляете и убираете элементы с начала, производительность может заметно пострадать. К счастью, есть deque (double-ended queue)! Это двусторонняя очередь, которая реализована на основе связанного списка: вставка и удаление элементов с любого конца происходят за константное время.## Реализуем очередь
Очередь — это структура данных, работающая по принципу FIFO (First-In, First-Out, “первым пришёл — первым ушёл”). Давайте посмотрим, как можно буквально в пару строк сделать простейшую очередь:
from collections import deque
queue = deque()
# Добавляем элементы в конец очереди
queue.append('apple')
queue.append('banana')
queue.append('cherry')
# Удаляем элемент из начала очереди
first = queue.popleft()
print(first) # apple
Здесь всё интуитивно ясно:
append добавляет элемент в конец, а popleft вытаскивает первый элемент.## А теперь стек
А вот стек — это LIFO (Last-In, First-Out, “последним пришёл — первым ушёл”). Реализуется он не менее просто:
from collections import deque
stack = deque()
# Добавляем элементы на вершину стека
stack.append('red')
stack.append('green')
stack.append('blue')
# Удаляем элемент с вершины стека
top = stack.pop()
print(top) # blue
Для стека используйте методы
append и pop. Всё, больше ничего не нужно!## Немного тонкостей
-
deque можно использовать и как очередь, и как стек — просто используйте нужные методы: для очереди append и popleft, для стека — append и pop.- Можно задавать максимальную длину очереди (
maxlen), и тогда при переполнении старые элементы будут автоматически удаляться.-
deque поддерживает перебор циклом, а также методы, похожие на обычные списки: extend, remove, count и другие.## Итого
Использовать стандартный модуль collections и класс deque — отличный способ писать лаконичный, быстрый и читаемый код для очередей и стеков. Основная прелесть — минимум кода и максимум эффективности, а всё самое “магическое” спрятано внутри самой стандартной библиотеки Python.
Экспериментируйте с
deque — и почувствуйте разницу!👍1
Привет! Я — Иван, и сегодня мы напишем простую, но очень полезную программу: учёт расходов на Python. Вы удивитесь, как здорово совмещаются такие модули, как
Первый шаг — научимся сохранять расходы в файле CSV. Это позволит работать с данными в удобном табличном виде.
Теперь, когда у нас есть таблица расходов, пора научиться их читать и анализировать. Допустим, мы хотим подбить итог по категориям и узнать, куда уходит основная часть бюджета.
А что если визуализировать эти данные? С этим справится всемогущий
Итак, на базе трёх коротких функций мы получаем персональный трекер расходов: сохраняем их, анализируем и наглядно видим, что съедает наш бюджет.
Советую поэкспериментировать: добавить даты, поиск по месяцам, экспорт в другие форматы. Python + CSV + matplotlib — это мощный, гибкий и, главное, простой старт для любого, кто хочет автоматизировать свою бытовую жизнь!
csv и matplotlib, чтобы автоматизировать ваши финансовые записи и даже видеть их на графике!Первый шаг — научимся сохранять расходы в файле CSV. Это позволит работать с данными в удобном табличном виде.
import csv
def add_expense(category, amount):
with open('expenses.csv', 'a', newline='') as file:
writer = csv.writer(file)
writer.writerow([category, amount])
# Пример использования:
add_expense('Food', 520)
add_expense('Transport', 300)
Теперь, когда у нас есть таблица расходов, пора научиться их читать и анализировать. Допустим, мы хотим подбить итог по категориям и узнать, куда уходит основная часть бюджета.
def read_expenses():
expenses = {}
with open('expenses.csv', newline='') as file:
reader = csv.reader(file)
for row in reader:
category, amount = row
expenses[category] = expenses.get(category, 0) + float(amount)
return expenses
# Выведем сводку
expenses_summary = read_expenses()
for category, total in expenses_summary.items():
print(f"{category}: {total}")
А что если визуализировать эти данные? С этим справится всемогущий
matplotlib. Построим круговую диаграмму расходов!import matplotlib.pyplot as plt
def plot_expenses(expenses):
categories = list(expenses.keys())
amounts = list(expenses.values())
plt.pie(amounts, labels=categories, autopct='%1.1f%%')
plt.title('Expense Breakdown')
plt.show()
# Вызов функции для построения графика:
plot_expenses(expenses_summary)
Итак, на базе трёх коротких функций мы получаем персональный трекер расходов: сохраняем их, анализируем и наглядно видим, что съедает наш бюджет.
Советую поэкспериментировать: добавить даты, поиск по месяцам, экспорт в другие форматы. Python + CSV + matplotlib — это мощный, гибкий и, главное, простой старт для любого, кто хочет автоматизировать свою бытовую жизнь!
👍1
Привет, друзья! Меня зовут Иван, и сегодня я расскажу вам, как начать автоматизировать проверку вашего Python-кода с помощью встроенного модуля unittest. Даже если вы только начинаете свой путь в программировании, поверьте — тесты быстро станут вашими лучшими помощниками!
## Зачем нужны автоматические тесты?
Пока проект маленький, ошибки найти просто. Но как только код начинает разрастаться, простая проверка глазами становится неэффективной. Тут и приходит на помощь unittest: вы пишете специальные функции, которые автоматически запускаются и проверяют поведение вашего кода.
## Ваш первый тест
Допустим, у вас есть функция, которая складывает числа:
Напишем к ней тест:
Что здесь происходит? Мы наследуемся от
## Как работает unittest
-
-
-
Давайте добавим пример с ошибкой:
Этот тест пройдет, если функция действительно выбрасывает
## Полезные советы
- Один тест — одна логика. Это облегчает поиск багов.
- Давайте тестам говорящие имена:
- Запускать тесты можно командой
- Не бойтесь писать тесты даже для простых функций!
Автоматическое тестирование — это ваш надежный щит против багов. Начните использовать unittest прямо сегодня и почувствуйте разницу: код становится чище, а жизнь — спокойнее.
## Зачем нужны автоматические тесты?
Пока проект маленький, ошибки найти просто. Но как только код начинает разрастаться, простая проверка глазами становится неэффективной. Тут и приходит на помощь unittest: вы пишете специальные функции, которые автоматически запускаются и проверяют поведение вашего кода.
## Ваш первый тест
Допустим, у вас есть функция, которая складывает числа:
def add(a, b):
return a + b
Напишем к ней тест:
import unittest
class TestAddFunction(unittest.TestCase):
def test_add_positive(self):
self.assertEqual(add(2, 3), 5)
def test_add_zero(self):
self.assertEqual(add(0, 0), 0)
def test_add_negative(self):
self.assertEqual(add(-1, -1), -2)
if __name__ == '__main__':
unittest.main()
Что здесь происходит? Мы наследуемся от
unittest.TestCase и определяем методы, начинающиеся с test_. Каждый такой метод — отдельная проверка. Если что-то пошло не так, unittest сразу об этом сообщит.## Как работает unittest
-
assertEqual(a, b): проверяет, что a и b равны.-
assertTrue(expr): выражение истинно.-
assertRaises: ожидается исключение.Давайте добавим пример с ошибкой:
def divide(a, b):
return a / b
class TestDivideFunction(unittest.TestCase):
def test_divide_by_zero(self):
with self.assertRaises(ZeroDivisionError):
divide(1, 0)
Этот тест пройдет, если функция действительно выбрасывает
ZeroDivisionError при делении на ноль.## Полезные советы
- Один тест — одна логика. Это облегчает поиск багов.
- Давайте тестам говорящие имена:
test_sum_with_zero, test_divide_by_negative.- Запускать тесты можно командой
python my_test.py.- Не бойтесь писать тесты даже для простых функций!
Автоматическое тестирование — это ваш надежный щит против багов. Начните использовать unittest прямо сегодня и почувствуйте разницу: код становится чище, а жизнь — спокойнее.
👍1
Привет! С вами Иван, и сегодня мы научимся работать с изображениями в Python, используя библиотеку Pillow. Если вам когда-либо хотелось быстро изменить размер изображения, повернуть его или преобразовать в черно-белое — этот пост для вас! Всё просто, красиво и, конечно, на Python.
### Установка Pillow
Для начала поставим Pillow — это «переосмысленный» PIL, классическая библиотека для обработки изображений в Python. Открываем терминал и набираем:
Вуаля! Теперь у нас есть весь инструментарий для базовых (и не только!) манипуляций с картинками.
### Открываем и сохраняем изображение
Сначала посмотрим, как просто загрузить файл:
Метод
### Изменение размера
Очень часто нужно «ужать» картинку до нужных размеров. Делается это одной строчкой:
### Поворот изображения
А как насчет вращения? Вот так:
Угол указываем в градусах, против часовой стрелки.
### Перевод в черно-белое
Бывает, требуется сделать изображение черно-белым — например, для аватара или стикера.
Аргумент
### Кадрирование (crop)
Хочется урезать лишнее? Используем
### Лёгкая обработка на лету
Комбинировать операции легко. Например, уменьшим и повернём картинку:
### На заметку
Pillow поддерживает множество форматов: JPEG, PNG, BMP, GIF и даже ICO. Всё, о чём мечтал начинающий Python-разработчик-графоман! Главное — не забывайте всегда открывать файлы в режиме чтения байтов, если работаете с потоками или web, но это уже тема для следующего поста.
Так что, вооружайтесь Python, пробуйте Pillow и создавайте свои шедевры из любых изображений — быстро и просто.
До новых встреч!
### Установка Pillow
Для начала поставим Pillow — это «переосмысленный» PIL, классическая библиотека для обработки изображений в Python. Открываем терминал и набираем:
pip install pillow
Вуаля! Теперь у нас есть весь инструментарий для базовых (и не только!) манипуляций с картинками.
### Открываем и сохраняем изображение
Сначала посмотрим, как просто загрузить файл:
from PIL import Image
img = Image.open('example.jpg')
img.show()
Метод
show() откроет картинку в просмотрщике по умолчанию. Чтобы сохранить копию в другом формате:img.save('example_copy.png')
### Изменение размера
Очень часто нужно «ужать» картинку до нужных размеров. Делается это одной строчкой:
resized_img = img.resize((200, 200))
resized_img.save('resized_example.jpg')
### Поворот изображения
А как насчет вращения? Вот так:
rotated_img = img.rotate(90)
rotated_img.save('rotated_example.jpg')
Угол указываем в градусах, против часовой стрелки.
### Перевод в черно-белое
Бывает, требуется сделать изображение черно-белым — например, для аватара или стикера.
bw_img = img.convert('L')
bw_img.save('bw_example.jpg')
Аргумент
'L' означает градации серого (8-bit).### Кадрирование (crop)
Хочется урезать лишнее? Используем
crop, указав координаты прямоугольника:cropped_img = img.crop((50, 50, 300, 300))
cropped_img.save('cropped_example.jpg')
### Лёгкая обработка на лету
Комбинировать операции легко. Например, уменьшим и повернём картинку:
new_img = img.resize((100, 100)).rotate(45)
new_img.save('combo_example.jpg')
### На заметку
Pillow поддерживает множество форматов: JPEG, PNG, BMP, GIF и даже ICO. Всё, о чём мечтал начинающий Python-разработчик-графоман! Главное — не забывайте всегда открывать файлы в режиме чтения байтов, если работаете с потоками или web, но это уже тема для следующего поста.
Так что, вооружайтесь Python, пробуйте Pillow и создавайте свои шедевры из любых изображений — быстро и просто.
До новых встреч!
👍1
Привет, друзья! С вами Иван, и сегодня мы окунемся в захватывающий мир искусственного интеллекта: поговорим о том, как работать с API OpenAI и создавать свой собственный генератор текста на Python. Готовьте свои токены!
## Что такое OpenAI API и зачем он нужен?
OpenAI API — это облачный сервис, который позволяет взаимодействовать с моделями семейства GPT напрямую из вашего приложения. С его помощью можно не только генерировать тексты, но и реализовать чат-бота, автодополнение или даже писать стихи по заданной теме!
## Начинаем: регистрация и установка
Для начала понадобится API-ключ. Зарегистрируйтесь на platform.openai.com, получите ключ и установите библиотеку:
## Первый пример: переводим идеи в текст
Воспользуемся модулем
Этот небольшой скрипт превращает вашу команду (prompt) в связный английский текст. Пример выше попросит ИИ предложить три идеи проектов.
## Немного магии параметров
-
-
-
-
## Делаем помощника-программиста
Как насчёт на лету генерировать сниппеты кода?
GPT сам напишет нужный фрагмент — экономьте время и силы!
---
Всем успехов в покорении сил мощного искусственного интеллекта. С помощью OpenAI API и Python ваши идеи быстро превратятся в настоящие умные приложения!
## Что такое OpenAI API и зачем он нужен?
OpenAI API — это облачный сервис, который позволяет взаимодействовать с моделями семейства GPT напрямую из вашего приложения. С его помощью можно не только генерировать тексты, но и реализовать чат-бота, автодополнение или даже писать стихи по заданной теме!
## Начинаем: регистрация и установка
Для начала понадобится API-ключ. Зарегистрируйтесь на platform.openai.com, получите ключ и установите библиотеку:
pip install openai
## Первый пример: переводим идеи в текст
Воспользуемся модулем
openai и создадим простейшую функцию генерации:import openai
openai.api_key = "your-api-key-here"
def generate_text(prompt):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo", # Бесплатная и шустрая модель
messages=[{"role": "user", "content": prompt}],
max_tokens=100 # Ограничим длину ответа
)
return response.choices[0].message['content']
output = generate_text("Suggest three creative project ideas for Python beginners.")
print(output)
Этот небольшой скрипт превращает вашу команду (prompt) в связный английский текст. Пример выше попросит ИИ предложить три идеи проектов.
## Немного магии параметров
-
model — выбирайте актуальную модель (сейчас популярны gpt-3.5-turbo, gpt-4).-
messages — можно вести полноценный диалог с ИИ: передавайте цепочку сообщений.-
max_tokens — ограничивает длину генерируемого ответа.-
temperature (по умолчанию 1) — регулирует креативность: ниже — ответы строже и предсказуемей, выше — более неожиданные.## Делаем помощника-программиста
Как насчёт на лету генерировать сниппеты кода?
query = "Write Python code to print all prime numbers up to 50"
print(generate_text(query))
GPT сам напишет нужный фрагмент — экономьте время и силы!
---
Всем успехов в покорении сил мощного искусственного интеллекта. С помощью OpenAI API и Python ваши идеи быстро превратятся в настоящие умные приложения!
Openai
OpenAI Platform
👍1🔥1
Привет! С вами Иван, и сегодня мы окунёмся в мир хэшей в Python, познакомившись с модулем
### Что такое хэш?
Хэш-функции преобразуют любые данные в фиксированной длины строку байт (обычно в виде шестнадцатеричной строки). Особенность — малейшее изменение исходных данных радикально меняет результат. Это идеальный способ проверки целостности информации и хранения паролей.
### Быстрый старт с hashlib
Модуль
Вывод — длинная строка из цифр и букв. Это SHA-256 хэш вашей строки. Важно: если вы попробуете изменить хотя бы один символ в исходной строке, результат будет совершенно другим!
### Зачем это нужно?
1. Проверка целостности файлов: скачали файл и хотите убедиться, что он не повреждён? Считайте хэш и сравните.
2. Хранение паролей: сохранять пароли в «чистом» виде — плохая идея! Лучше храните хэши и сравнивайте их при проверке.
3. Генерация уникальных идентификаторов: иногда удобно быстро получить короткий “отпечаток” больших данных.
### Пример: проверка целостности файла
### Коротко о популярных алгоритмах
- MD5 — быстро, но уже не считается безопасным.
- SHA-1 — тоже устарел в плане криптографии.
- SHA-256, SHA-512 — намного надёжнее и чаще используются.
### Работа с паролями
На этом всё! Применяйте
hashlib. Вопрос безопасности и хранения паролей — один из самых частых на практике, и здесь на помощь приходит этот мощный инструмент. Как именно? Сейчас расскажу!### Что такое хэш?
Хэш-функции преобразуют любые данные в фиксированной длины строку байт (обычно в виде шестнадцатеричной строки). Особенность — малейшее изменение исходных данных радикально меняет результат. Это идеальный способ проверки целостности информации и хранения паролей.
### Быстрый старт с hashlib
Модуль
hashlib — это стандартная библиотека, никакой установки не требуется. Давайте попробуем посчитать хэш обычной строки:import hashlib
data = "I love Python!"
hash_object = hashlib.sha256(data.encode())
hex_dig = hash_object.hexdigest()
print(hex_dig)
Вывод — длинная строка из цифр и букв. Это SHA-256 хэш вашей строки. Важно: если вы попробуете изменить хотя бы один символ в исходной строке, результат будет совершенно другим!
### Зачем это нужно?
1. Проверка целостности файлов: скачали файл и хотите убедиться, что он не повреждён? Считайте хэш и сравните.
2. Хранение паролей: сохранять пароли в «чистом» виде — плохая идея! Лучше храните хэши и сравнивайте их при проверке.
3. Генерация уникальных идентификаторов: иногда удобно быстро получить короткий “отпечаток” больших данных.
### Пример: проверка целостности файла
import hashlib
def file_hash(filename):
hash_md5 = hashlib.md5()
with open(filename, "rb") as f:
for chunk in iter(lambda: f.read(4096), b""):
hash_md5.update(chunk)
return hash_md5.hexdigest()
print(file_hash("example.txt"))
### Коротко о популярных алгоритмах
- MD5 — быстро, но уже не считается безопасным.
- SHA-1 — тоже устарел в плане криптографии.
- SHA-256, SHA-512 — намного надёжнее и чаще используются.
### Работа с паролями
import hashlib
def hash_password(password):
return hashlib.sha256(password.encode()).hexdigest()
# Сохраняем только значение функции hash_password
На этом всё! Применяйте
hashlib для защиты своих данных, это просто, быстро и современно.👍2
Друзья, всем привет! С вами Иван — и сегодня мы погружаемся в волшебный мир контекстных менеджеров Python. Если вы когда-нибудь открывали файлы с помощью конструкции
### Почему это круто?
Контекстные менеджеры позволяют элегантно управлять ресурсами: открытием и закрытием файлов, подключениями к базам данных, блокировкой потоков и даже временными изменениями настроек. Всё это — без лишнего кода, «разруливания» ошибок и необходимости помнить делать "уборку" вручную.
### Пример 1: Файловый менеджер, только свой
Ручное открытие файла = шанс забыть его закрыть. А вот так — забудь о заботах:
Используем наш менеджер:
### Пример 2: Управляем ресурсами без классов
Иногда нужен менеджер "по-быстрому". Здесь спасает модуль
### Как это работает?
- В первом примере
-
- В декораторе всё просто: до
### Где применить?
От управления файлами и сетевыми соединениями до логирования и даже тестовых изменений глобальных переменных. С контекстными менеджерами ваш код становится безопаснее, аккуратнее и короче.
Экспериментируйте! Создайте свой менеджер для каких-нибудь временных изменений или аккуратного подключения к сервису. Ваш Python-код скажет вам за это спасибо.
with, то вы уже их встречали в «дикой природе». Но что, если ваши задачи требуют создать свой собственный менеджер? Давайте разбираться, как это сделать!### Почему это круто?
Контекстные менеджеры позволяют элегантно управлять ресурсами: открытием и закрытием файлов, подключениями к базам данных, блокировкой потоков и даже временными изменениями настроек. Всё это — без лишнего кода, «разруливания» ошибок и необходимости помнить делать "уборку" вручную.
### Пример 1: Файловый менеджер, только свой
Ручное открытие файла = шанс забыть его закрыть. А вот так — забудь о заботах:
class CustomFile:
def __init__(self, filename, mode):
self.filename = filename
self.mode = mode
self.file = None
def __enter__(self):
self.file = open(self.filename, self.mode)
return self.file
def __exit__(self, exc_type, exc_val, exc_tb):
if self.file:
self.file.close()
Используем наш менеджер:
with CustomFile('example.txt', 'w') as file:
file.write('Hello, context!')
### Пример 2: Управляем ресурсами без классов
Иногда нужен менеджер "по-быстрому". Здесь спасает модуль
contextlib с его декоратором @contextmanager:from contextlib import contextmanager
@contextmanager
def temporary_switch(val):
print('Switch ON')
yield val
print('Switch OFF')
with temporary_switch('something'):
print('Working inside the context')
### Как это работает?
- В первом примере
__enter__ запускается при входе в блок, возвращая нужный объект (например, сам файл).-
__exit__ срабатывает на выходе из блока (даже если случилась ошибка!) и заботится о закрытии или любой другой очистке.- В декораторе всё просто: до
yield — вход, после — выход.### Где применить?
От управления файлами и сетевыми соединениями до логирования и даже тестовых изменений глобальных переменных. С контекстными менеджерами ваш код становится безопаснее, аккуратнее и короче.
Экспериментируйте! Создайте свой менеджер для каких-нибудь временных изменений или аккуратного подключения к сервису. Ваш Python-код скажет вам за это спасибо.
🥰2