Программистика
قناة بسيطة
Лучший канал про python Ссылка для друга: https://t.me/+Ai6ughKtf5g2ZmFi Купить рекламу: https://telega.in/c/+Ai6ughKtf5g2ZmFi Админ: @JeyRahol По рекламе: @ReivuManager
إظهار المزيد5 790
المشتركون
-524 ساعات
+137 أيام
-4430 أيام
أرشيف المشاركات
5 790
👩💻 Классы, методы и свойства — что, где и зачем?
Новички часто путают, чем отличаются методы класса, методы экземпляра и статические методы. Вот кратко — без магии, только практика и ловушки.
👍 Методы экземпляра — работают с конкретным объектом
class User:
def show(self):
print(self) # self — это конкретный экземпляр
👉 Всегда первым аргументом — self
👉 Доступ к атрибутам экземпляра
👉 Можно менять состояние объекта
👍 Методы класса — работают с самим классом
class User:
@classmethod
def create_default(cls):
return cls("Bot", 0)
👉 Аргумент cls — сам класс, а не объект
👉 Не видит конкретный self, только классную “шапку”
👉 Часто — альтернативные конструкторы, фабрика новых объектов
👍 Статические методы — не знают ни про класс, ни про объект
class User:
@staticmethod
def help():
print("Создай пользователя через User(name, age)")
👉Нет self, нет cls вообще
👉Обычная функция внутри класса — для логической организации
👉Не обращается к атрибутам класса или экземпляра
🧱 Вот где обычно путают:
🟢В @staticmethod НЕЛЬЗЯ обращаться к self и cls — их просто нет! 🟢 В @classmethod НЕЛЬЗЯ менять конкретные значения self — доступа нет, только к классу.👍 Методы экземпляра (без декораторов) — НЕЛЬЗЯ вызвать на классе напрямую:
User.show() # ошибка!
# Можно только через экземпляр: u = User(); u.show()
❗️ Типичные ошибки
Перепутал self и cls: @classmethod def f(self) — ошибка! должно быть cls Описал метод через @staticmethod, а внутри пробуешь работать с self — ошибка! Хочешь вызывать метод экземпляра на классе — получишь TypeError В @classmethod внутри создаёшь объект через return User() — привязываешься к конкретному имени класса, нарушаешь наследование. Всегда используй cls()!✍️Пиши — с чем чаще всего путаешься и хотел бы разобрать примеры! Программистика || #Статья
5 790
Удаляйте ChatGPT. Вы не умеете им пользоваться.
Большинство пользователей спамит в ИИ всякую чушь — просят рассказать анекдот, изливают душу и используют как Гугл.
Российский тимлид OpenAI Вадим Петрич рассказывает в «Доктор GPT» как извлекать из нейронок максимум пользы. Это очень интересно:
• ТОП №1 нейросеть, генерирующая видео без цензуры вообще
• Готовые промты на все случаи жизни
• Инсайды и разработки от китов индустрии
Подпишитесь, с Доктором GPT нейронки станут инструментом роста, а не безделушкой:
https://t.me/+fMjqBvMUQ3RkYzEy
5 790
⚡️ Айтишник из «VISION» скупил курсы айти школ и выложил гигабайты материалов к себе
Каждый найдет что-то по душе:
1202 ГБ — Python
1811 ГБ — Frontend
1100 ГБ — C / C++ / C#
804 ГБ — Java
411 ГБ — SQL & БД
309 ГБ — DevOps
998 ГБ — ИБ & Хакинг
773 ГБ — Kotlin / Swift
189 ГБ — PHP
201 ГБ — GoLang
170 ГБ — Rust
167 ГБ — QA / Тестирование
310 ГБ — 1C + Лицензии
495 ГБ — Машинное обучение
704 ГБ — Аналитика Данных
991 ГБ — Дизайн
Материалы в закрепе, постоянно пополняются👆🏻
5 790
Кто сказал, что после 11.11 скидок не бывает?
Это точно не про нас, потому что в Kata Academy объявляется черная пятница!
⚡Сейчас у тебя есть возможность обучаться с приятной скидкой на наших курсах:
- с гарантированным трудоустройством;
- с гарантированной зарплатой (Fe - от 100.000, Go/Java - от 120.000);
- с подготовкой к собеседованиям;
... И сразу после обучения ты получишь свой первый оффер❤️
Перейти на сайт
#реклама 16+
kata.academy
О рекламодателе
5 790
Функция должна принимать необязательный список целых чисел и может вернуть либо строку, либо None.
Как правильно описать типы такой функции?
Что должно быть ИСПОЛЬЗОВАНО в аннотациях?
5 790
👀 Python для data science
Python — идеальный выбор для манипулирования и извлечения информации из данных всех видов. «Python для data science» познакомит программистов с питоническим миром анализа данных. Вы научитесь писать код на Python, применяя самые современные методы, для получения, преобразования и анализа данных в управлении бизнесом, маркетинге и поддержке принятия решений. Познакомьтесь с богатым набором встроенных структур данных Python для выполнения основных операций, а также о надежной экосистемы библиотек с открытым исходным кодом для data science, включая NumPy, pandas, scikit-learn, matplotlib и другие. Научитесь загружать данные в различных форматах, упорядочивать, группировать и агрегировать датасеты, а также создавать графики, карты и другие визуализации.Программистика || #doc
5 790
Простые аннотации функций в Python:
int, str, list, dict, Optional, Union
Python — динамический язык, и переменные могут менять тип в процессе выполнения. Это гибко, но иногда опасно: IDE и статические анализаторы не могут заранее понять, какие типы вы используете. Type hints (аннотации типов) решают эту проблему. Они помогают:
🟢 Писать более понятный код. 🟢 Легче отлавливать ошибки ещё до запуска программы. 🟢 Получать автодополнение и подсказки в IDE.➡️Давайте разберём базовые аннотации, которые пригодятся каждому. 1️⃣ int и str Самые простые типы. Используем для чисел и строк.
def multiply(x: int, y: int) -> int:
return x * y
def greet(name: str) -> str:
return f"Hello, {name}!"
Когда использовать:
🟢 Всегда, когда функция ожидает конкретный тип данных. 🟢 Позволяет IDE предупреждать, если вы случайно передадите, например, строку вместо числа.2️⃣ list и dict Аннотировать коллекции важно, чтобы понимать, что внутри списка или словаря.
from typing import List, Dict
def sum_numbers(numbers: List[int]) -> int:
return sum(numbers)
def count_words(text: str) -> Dict[str, int]:
words = text.split()
return {word: words.count(word) for word in words}
Когда использовать:
🟢 Когда функция работает с коллекциями. 🟢 Чтобы читатели кода (и IDE) сразу видели, какие типы элементов внутри.💡 Важно: просто писать
list или dict можно, но List[int] и Dict[str, int] дают точную информацию о содержимом.
3️⃣ Optional
Optional[X] означает: аргумент может быть либо типом X, либо None.
from typing import Optional
def greet(name: Optional[str] = None) -> str:
if name is None:
return "Hello, stranger!"
return f"Hello, {name}!"
Когда использовать:
👍 Когда параметр необязательный. 👍 Когда функция может вернуть None.⚠️ Не путать с обычным значением по умолчанию — Optional именно про тип, а не про дефолт. 4️⃣ Union
Union[X, Y] означает: параметр может быть любого из указанных типов.
from typing import Union
def stringify(value: Union[int, float]) -> str:
return str(value)
Когда использовать:
👍 Когда функция принимает несколько типов, но обрабатывает их одинаково. 👍 Например, числа с плавающей точкой и целые, или строку и число.💡 С Python 3.10+ есть сокращённая запись:
def stringify(value: int | float) -> str:
return str(value)
✔️ Ключевые советы
👉Аннотируйте всё, что важно для понимания функции. Даже простые функции лучше типизировать. 👉 Используйте Optional, когда допускаете None. 👉 Union нужен, если аргумент может быть нескольких типов. 👉 IDE и линтеры (mypy, Pyright) будут проверять ваш код и предупреждать об ошибках типов.🗣 Используя эти простые типы (
int, str, list, dict, Optional, Union), вы уже делаете код чище, безопаснее и понятнее для команды и IDE.
Программистика || #Статья5 790
👀 Изучаем Data Science: обработка, исследование, визуализация и моделирование данных с помощью Python
Рассмотрена работа с инструментами pandas и SQL, методы выявления закономерностей и очистки данных. Описаны различные источники информации, включая текстовые, бинарные и веб-данные. Подробно изложены статистические методы: доверительные интервалы, проверка гипотез, конструирование признаков. Приведены практические примеры на языке Python из разных областей: анализ транспортных систем, экологические исследования, ветеринарная аналити-ка. Заключительные разделы посвящены логистической регрессии и оптимизации моделей с применением к задачам классификации текстов.Программистика || #doc
5 790
👩💻 TypeVar, Generic и Protocol — как писать библиотеки с полной поддержкой type hints
Если вы создаёте библиотеку для Python, просто писать
def foo(x: int) -> str недостаточно. Пользователи хотят автодополнение, строгую проверку типов и документацию прямо в IDE. Для этого есть TypeVar, Generic и Protocol. Разбираемся без магии.
🧱 Почему обычных type hints мало
🟢 Локальные hints полезны, но не передают зависимости типов:
def first(lst: list) -> str:
return lst[0]
➡️ IDE не понимает, что возвращаемый тип зависит от типа элементов списка.
📌 TypeVar — универсальный тип
TypeVar позволяет указать, что один и тот же тип повторяется:
from typing import TypeVar, Sequence
T = TypeVar('T') # универсальный тип
def first(lst: Sequence[T]) -> T:
return lst[0]
x: int = first([1, 2, 3]) # IDE знает: x -> int
y: str = first(["a", "b", "c"]) # IDE знает: y -> str
✅ Полезно для функций, где вход и выход зависят друг от друга.
📦 Generic — обобщённые классы
Если вы пишете класс, который работает с любыми типами:
from typing import Generic, TypeVar
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self) -> None:
self.items: list[T] = []
def push(self, item: T) -> None:
self.items.append(item)
def pop(self) -> T:
return self.items.pop()
stack_int = Stack[int]()
stack_int.push(42)
x = stack_int.pop() # IDE знает: x -> int
➡️ Без Generic IDE не сможет подсказать тип элементов.
🧩 Protocol — контракт интерфейса
Protocol позволяет объявлять «как должен себя вести объект», без жёсткого наследования.
from typing import Protocol
class SupportsClose(Protocol):
def close(self) -> None:
...
def cleanup(resource: SupportsClose) -> None:
resource.close()
class FileLike:
def close(self) -> None:
print("Закрыто")
cleanup(FileLike()) # ✅ Типы совпадают, работает
✅ Protocol полезен для duck typing + type hints.
🪖 Комбинируем всё
Можно делать библиотеки с полной типизацией и автодополнением:
from typing import Generic, TypeVar, Protocol
T = TypeVar('T')
class Serializer(Protocol[T]):
def serialize(self, value: T) -> str:
...
def deserialize(self, data: str) -> T:
...
class IntSerializer:
def serialize(self, value: int) -> str:
return str(value)
def deserialize(self, data: str) -> int:
return int(data)
def save_value(serializer: Serializer[T], value: T) -> str:
return serializer.serialize(value)
s = save_value(IntSerializer(), 42) # IDE знает: s -> str
💡 Запомни
👉 TypeVar — для связывания типов входа и выхода 👉 Generic — для обобщённых классов 👉 Protocol — для интерфейсов и duck typing🗣 Если хотите пост про
Literal, Final, TypedDict и продвинутые паттерны типизации — пишите темы, мы сделаем! 🚀
Программистика || #Статья5 790
🖥 pre-commit — ваш автоматический код-ревьюер.
Эта библиотека превращает Git-хуки в мощную систему контроля качества кода. Вместо ручного запуска линтеров перед каждым комитом, pre-commit автоматически проверяет изменения на качество — будь то синтаксические ошибки в Python или форматирование SCSS-файлов.🖥 Ссылка на GitHub Программистика|| #Репозиторий
5 790
👩💻 codecademy.com
Интерактивная платформа, предлагающая бесплатный курс для начинающих, который познакомит вас с основами Python
🌐 СсылкаПрограммистика || #Ресурсы
5 790
👀 FastAPI: веб-разработка на Python
FastAPI — относительно новый, но надежный фреймворк с чистым дизайном, использующий преимущества актуальных возможностей Python. Как следует из названия, FastAPI отличается высоким быстродействием и способен конкурировать в этом с аналогичными фреймворками на таких языках, как Golang. Эта практическая книга расскажет разработчикам, знакомым с Python, как FastAPI позволяет достичь большего за меньшее время и с меньшим количеством кода.Программистика || #doc
5 790
👀 Основы динамики сооружений с применением Python
Курс знакомит с основами динамики сооружений, рассматриваются системы с одной и несколькими степенями свободы, их свободные и вынужденные колебания, в том числе с учетом демпфирования. Расчеты реализованы с использованием языка программирования Python.
🌐 СсылкаПрограммистика || #Course
5 790
👩💻 В сеть вывалилась гигантская куча курсов и книг от топовых IT‑школ
Держи сотни гигабайт свежих уроков, и каждую неделю мы подкидываем ещё!
• 1612 ГБ — DevOps
• 1402 ГБ — Python
• 1300 ГБ — C, C++
• 1815 ГБ — Frontend
• 1515 ГБ — Backend
• 898 ГБ — ИБ, Хакинг
• 996 ГБ — Kotlin, Swift
• 212 ГБ — JavaScript
• 315 ГБ — Flutter
• 820 ГБ — Go, PHP
• 419 ГБ — Java, Rust
• 648 ГБ — GameDev
• 517 ГБ — Windows, Linux
• 998 ГБ — Дизайн (UX/UI)
• 617 ГБ — Нейросети (ML/RL)
• 546 ГБ — БД (SQL & NoSQL)
• 687 ГБ — Аналитика данных
• 115 ГБ — QA-тестирование
Подписывайся и не плати за то, что можно получить бесплатно
5 790
👩💻 uv: pip на стероидах — ставит пакеты в 100 раз быстрее
Устал ждать, пока pip устанавливает зависимости? uv — это менеджер пакетов на Rust, который делает pip смешным. Там, где pip думает 30 секунд, uv справляется за полсекунды.
Установка библиотек, создание виртуальных окружений, разрешение зависимостей — всё летает. Он полностью совместим с pip и poetry, поддерживает pyproject.toml и работает так же просто. Просто меняешь
pip на uv pip в команде и получаешь невероятную скорость без изменения workflow.
Установка:
curl -LsSf https://astral.sh/uv/install.sh | sh
Использование:
uv venv # Создать виртуальное окружение
uv pip install requests # Установить пакет
uv pip sync requirements.txt # Синхронизировать зависимости
Программистика || #doc5 790
👀 Практикум по статистике на Python
Курс позволит закрепить базовые знания статистики и широко применяемых статистических методов на практических тестах и заданиях, в том числе с использованием Python (pandas, numpy, scipy, statsmodels, matplotlib).
🌐 СсылкаПрограммистика || #Course
5 790
Python – это просто. Пошаговое руководство по программированию и анализу данных
Рассмотрены основы синтаксиса языка Python на примере дистрибутива Anaconda. Показаны приложения IPython, Spyder IDE, Jupyter Notebook. Описан синтаксис переменных, функций, циклов. Подробно изучаются структуры данных в Python: строки, списки, кортежи, множества и словари. Объясняется понятие классов и их применение в объектно-ориентированном программировании. Описаны возможности библиотеки обработки изображений Pillow, библиотеки Tkinter для создания приложений с графическим интерфейсом. Отдельный раздел посвящен обработке ошибок и исключений в программах. Рассматриваются библиотеки NumPy и Pandas, приводятся практические примеры их использования для анализа и обработки данных. Описана библиотека Matplotlib и ее возможности в сфере визуализации данных.
Программистика || #Книги
