🔥 Что такое
✅ Оптимизирует потребление памяти за счёт отказа от
✅ Ускоряет доступ к атрибутам
✅ Запрещает добавление новых атрибутов, не прописанных в
Пример без
🔹 Минус: каждый объект хранит атрибуты в
Пример с
🔹 Плюсы:
1. Экономия памяти
2. Ускорение доступа к атрибутам
Когда
❌ Если нужно динамически добавлять атрибуты
❌ Если используется
Статья: https://clc.to/QjMXpg
Использовали
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#синтаксическийсахар
__slots__ в Python?__slots__ — это специальный атрибут класса, который:✅ Оптимизирует потребление памяти за счёт отказа от
__dict__✅ Ускоряет доступ к атрибутам
✅ Запрещает добавление новых атрибутов, не прописанных в
__slots__Пример без
__slots__class Point:
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
def __str__(self) -> str:
#
point = Point(1.2, 3.4)
🔹 Минус: каждый объект хранит атрибуты в
__dict__, что расходует памятьПример с
__slots__class Point:
__slots__ = ('x', 'y')
def __init__(self, x: float, y: float) -> None:
self.x = x
self.y = y
def __str__(self) -> str:
#
point = Point(1.2, 3.4)
🔹 Плюсы:
1. Экономия памяти
2. Ускорение доступа к атрибутам
Когда
__slots__ НЕ стоит использовать?❌ Если нужно динамически добавлять атрибуты
❌ Если используется
__dict__Статья: https://clc.to/QjMXpg
Использовали
__slots__ в проектах?🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1
⚙️ How to: оптимизируем код с помощью профилировщика
Хотите узнать, что замедляет ваш код? Используйте встроенный профилировщик cProfile. Этот мощный инструмент поможет выявить проблемные участки и ускорить выполнение.
Пример использования:
Что показывает результат:
▪️ Общее время: 4 вызова функций за 0.000 CPU секунд.
▪️ Подробная статистика:
-
-
-
-
-
Пример вывода:
Как оптимизировать:
1. Анализируйте
2. Сократите вызовы: если ncalls высок, рассмотрите оптимизацию логики.
3. Тестируйте изменения: повторяйте профилирование после оптимизации.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#магиякода
Хотите узнать, что замедляет ваш код? Используйте встроенный профилировщик cProfile. Этот мощный инструмент поможет выявить проблемные участки и ускорить выполнение.
Пример использования:
import hashlib
import cProfile
cProfile.run('hashlib.md5("abcdefghiijkl").digest()')
Что показывает результат:
▪️ Общее время: 4 вызова функций за 0.000 CPU секунд.
▪️ Подробная статистика:
-
ncalls: количество вызовов.-
tottime: общее время в функции.-
percall: время на один вызов.-
cumtime: кумулятивное время.-
filename:lineno(function): расположение функции.Пример вывода:
Ordered by: standard name
ncalls tottime percall cumtime percall filename:lineno(function)
1 0.000 0.000 0.000 0.000 <string>:1(<module>)
1 0.000 0.000 0.000 0.000 {hashlib._md5}
1 0.000 0.000 0.000 0.000 {method 'digest' of '_hashlib.HASH' objects}
1 0.000 0.000 0.000 0.000 {method 'disable' of '_lsprof.Profiler' objects}
Как оптимизировать:
1. Анализируйте
tottime и cumtime: ищите функции с наибольшим временем выполнения.2. Сократите вызовы: если ncalls высок, рассмотрите оптимизацию логики.
3. Тестируйте изменения: повторяйте профилирование после оптимизации.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏1
Вайб-кодинг — это когда человек не пишет код вообще. Все задачи выполняет ИИ, будь то написание, исправление или чтение кода. Человек может не быть программистом или просто не иметь желания работать с кодом. Важно, что он лишь задаёт «вайб» задачи, а ИИ её решает.
Если вы работаете с инструментом вроде Cursor, используя его функции для создания кода и проверки его результата, то это не вайб-кодинг, а разработка с ИИ-инструментами (AI-assisted coding). Здесь вы, как разработчик, активно взаимодействуете с ИИ, но не теряете контроль над процессом.
А вот когда человек Lovable/v0/Bolt для создания сайта или автоматизации без заглядывания в код — это уже вайб-кодинг. И это прекрасно, потому что даёт возможность создавать решения без необходимости учить программирование. И с каждым годом таких людей будет становиться больше.
Отличаются и подходы. Когда разработчики работают с ИИ, они ставят задачи более детально и структурировано, например, указывают конкретные модули или шаги реализации. Вайб-кодеры, напротив, ставят задачи через описание желаемого функционала.
И главная проблема вайб-кодеров — это технический долг. Накопившиеся ошибки, дублированные функции и разные реализации могут привести к тому, что ИИ перестанет справляться с задачами.
Могли ли вы пару лет назад представить, что такое количество рутины в работе будет автоматизировано?
#режимразраба
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1😢1
Чек-лист: 5 приемов ускорения Python
👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор
Пример:
Результат: прирост производительности до 10-30 раз.
👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.
Пример:
👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.
Пример: С использованием Cython можно ускорить код, написав его в файле
👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.
Пример:
Векторизация операций с NumPy может быть в 50 раз быстрее.
👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.
Пример:
Это поможет найти узкие места и ускорить работу.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#синтаксическийсахар
👍 JIT-компиляция с Numba:
Numba — это JIT-компилятор, который переводит код Python в быстрый машинный код. Добавив декоратор
@jit, вы можете ускорить вычисления в циклах и операциях с массивами.Пример:
from numba import jit
import numpy as np
import time
@jit(nopython=True)
def sum_squares(arr):
total = 0
for i in range(arr.shape[0]):
total += arr[i] * arr[i]
return total
data = np.arange(1000000)
start = time.time()
result = sum_squares(data)
end = time.time()
print("Numba JIT:", result, "Time:", end - start)
Результат: прирост производительности до 10-30 раз.
👍 Многозадачность:
Python ограничивает многозадачность из-за GIL, но для вычислительно сложных задач можно использовать многопроцессорность, чтобы обойти это ограничение.
Пример:
import multiprocessing as mp
def process_image(image):
return image ** 2
if __name__ == '__main__':
images = range(20)
with mp.Pool(mp.cpu_count()) as pool:
results = pool.map(process_image, images)
print(results)
👍 Cython и PyPy:
Cython компилирует Python в C, что ускоряет выполнение кода. PyPy — это JIT-компилятор, который улучшает производительность без изменения кода.
Пример: С использованием Cython можно ускорить код, написав его в файле
.pyx, а с PyPy просто сменив интерпретатор.👍 Правильные структуры данных:
Используйте более эффективные структуры данных, такие как массивы NumPy, вместо списков Python для числовых вычислений. Это ускоряет выполнение и экономит память.
Пример:
import numpy as np
data = np.arange(1000000)
result = data * 2
Векторизация операций с NumPy может быть в 50 раз быстрее.
👍 Инструменты профилирования:
Профилирование помогает понять, какие части кода нуждаются в оптимизации. Используйте cProfile и line_profiler для анализа производительности.
Пример:
import cProfile
def heavy_computation():
return sum([i * i for i in range(1000000)])
cProfile.run('heavy_computation()')
Это поможет найти узкие места и ускорить работу.
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Это база: быстрая проверка списка на пустоту
При проверке списка на пустоту часто используют два варианта:
✅ Pythonic способ:
⏳ Медленный способ:
Хотя оба варианта работают, первый быстрее почти в 2 раза!
if not mylist быстрее, потому что:
✔️ Использует 2 инструкции виртуальной машины (LOAD_GLOBAL, TO_BOOL).
✔️ Инструкция
if len(mylist) == 0 медленнее, потому что:
📍 Требует 5 инструкций (LOAD_GLOBAL, LOAD_FAST, CALL, LOAD_CONST, COMPARE_OP).
📍 Вызывает
Вывод:
Используйте
👉 Подробности можно узнать в детальной статье: https://clc.to/rd3OQg
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#магиякода
При проверке списка на пустоту часто используют два варианта:
✅ Pythonic способ:
if not mylist:
⏳ Медленный способ:
if len(mylist) == 0:
Хотя оба варианта работают, первый быстрее почти в 2 раза!
if not mylist быстрее, потому что:
✔️ Использует 2 инструкции виртуальной машины (LOAD_GLOBAL, TO_BOOL).
✔️ Инструкция
TO_BOOL_LIST оптимизирована под списки и читает размер за 1 операцию.if len(mylist) == 0 медленнее, потому что:
📍 Требует 5 инструкций (LOAD_GLOBAL, LOAD_FAST, CALL, LOAD_CONST, COMPARE_OP).
📍 Вызывает
len(), что добавляет функциональные вызовы и лишние обращения к памяти.Вывод:
Используйте
if not mylist — это и короче, и быстрее. Особенно важно в критичных к скорости местах кода! 👉 Подробности можно узнать в детальной статье: https://clc.to/rd3OQg
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Математика — язык искусственного интеллекта
Хотите понять, как машина «думает»? Всё сводится к цифрам, вероятностям и векторам. Это база, без которой в Data Science делать нечего.
Завтра мы запускаем курс «Математика для разработки AI-моделей».
Идеально для тех, кто хочет стартовать в новой профессии правильно.
🎄 Цена: 28 200 ₽.
📅 Старт: Завтра.
👉 Узнать подробности и записаться
Попробуй свои силы: Бесплатный тест — @proglib_academy_webinar_bot
Хотите понять, как машина «думает»? Всё сводится к цифрам, вероятностям и векторам. Это база, без которой в Data Science делать нечего.
Завтра мы запускаем курс «Математика для разработки AI-моделей».
Идеально для тех, кто хочет стартовать в новой профессии правильно.
🎄 Цена: 28 200 ₽.
📅 Старт: Завтра.
👉 Узнать подробности и записаться
Попробуй свои силы: Бесплатный тест — @proglib_academy_webinar_bot
Используйте следующий промпт для генерации юнит-тестов с помощью pytest:
💬 Промпт:
Please generate comprehensive unit tests for the following Python function using pytest.
Requirements:
1. Carefully analyze the function’s functionality, inputs, and outputs.
2. Generate unit tests that cover standard use cases and edge cases.
3. Ensure that the tests are clear, easy to understand, and well-organized.
4. Challenge potential inaccuracies with false outcomes, testing against possible mistakes.
5. Use assertions that test both expected outcomes and exception handling.
[insert function code here]
Что вы получите?
▪️ Полный набор юнит-тестов, охватывающих все аспекты функции.
▪️ Применение лучших практик тестирования.
▪️ Обеспечение надежности кода и упрощение отладки.
✔️ Пример:
Предположим, у нас есть функция, которая вычисляет факториал числа:
def factorial(n: int) -> int:
if n == 0 or n == 1:
return 1
return n * factorial(n-1)
Промпт позволит получить набор юнит-тестов для этой функции:
import pytest
from your_module import factorial
def test_factorial_base_case():
"""Проверка, что факториал 0 и 1 возвращает 1."""
assert factorial(0) == 1
assert factorial(1) == 1
def test_factorial_positive_integers():
"""Проверка факториала для положительных целых чисел."""
assert factorial(2) == 2
assert factorial(3) == 6
assert factorial(4) == 24
assert factorial(5) == 120
def test_factorial_large_number():
"""Проверка факториала для большего числа."""
assert factorial(10) == 3628800
def test_factorial_negative():
"""Проверка, что функция выбрасывает исключение для отрицательных чисел."""
with pytest.raises(ValueError):
factorial(-1)
def test_factorial_edge_case():
"""Проверка факториала для граничного случая."""
assert factorial(6) == 720
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
Готовишься к интервью? Мы собрали 10 каверзных вопросов, которые любят задавать тимлиды. Здесь нет банальных задач — только те, на которых спотыкаются 80% кандидатов. Проверь себя и узнай, готов ли ты к следующему собесу!
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#режимразраба
Please open Telegram to view this post
VIEW IN TELEGRAM
Метод чейнинг (method chaining) — техника вызова нескольких методов на одном объекте в одной строке, где каждый метод возвращает
self, позволяя обходиться без промежуточных переменных.🔹 Преимущества:
• Меньше кода — избавляет от промежуточных переменных.
• Читаемость — код выглядит как последовательность логичных операций.
• Элегантный дизайн — делает API удобным для использования.
🔹 Недостатки:
• Трудность отладки — если что-то сломается, сложно найти источник ошибки.
• Длинные цепочки — могут ухудшать читаемость, если используются чрезмерно.
• Жёсткая связь методов — изменения в классе могут затронуть всю цепочку.
🎯 Когда использовать Method Chaining:
• Трансформации данных — очистка текста, математические вычисления, работа с датафреймами.
• Формировании Fluent API — используется в pandas, jQuery и других библиотеках для удобного взаимодействия с объектами.
🏆 Лучшие практики использования:
• Возвращайте self правильно — убедитесь, что каждый метод возвращает объект, с которым ведется работа, а не новый объект.
• Читаемые цепочки — избегайте слишком длинных цепочек, которые трудно отлаживать.
• Обработка ошибок — добавьте обработку исключений, чтобы не прерывать выполнение кода в случае ошибки.
• Логичность — методы должны выполняться в последовательности, логичной для объекта.
🔹 Пример на Pandas:
import pandas as pd
df = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
result = df.rename(columns={'Name': 'Full Name'}).sort_values(by='Age').reset_index(drop=True)
print(result)
🔹Пример на Flask:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/')
def index():
return jsonify(message="Hello, World!").status_code(200)
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Учим Python прямо на ферме: вышла игра, где грядки не копают — их программируют.
Здесь мотыгу заменяют дроны, а усталость — аккуратные скрипты. Ваша миссия — научить железных помощников работать за вас с помощью упрощённого Python и смотреть, как хозяйство автоматом превращается в мини-Силиконовую долину:
— Управление только кодом: дроны выполняют ваши инструкции строчка в строчку;
— Осваиваете основы программирования прямо по ходу игры, без скучных уроков;
— Никаких уровней — ферма эволюционирует вместе с вашими алгоритмами;
— Есть русский язык и Python IntelliSense — удобно даже из VS Code;
— В Steam — около 95% восторженных отзывов.
Вот ссылка, если хотите поиграть
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#синтаксическийсахар
Здесь мотыгу заменяют дроны, а усталость — аккуратные скрипты. Ваша миссия — научить железных помощников работать за вас с помощью упрощённого Python и смотреть, как хозяйство автоматом превращается в мини-Силиконовую долину:
— Управление только кодом: дроны выполняют ваши инструкции строчка в строчку;
— Осваиваете основы программирования прямо по ходу игры, без скучных уроков;
— Никаких уровней — ферма эволюционирует вместе с вашими алгоритмами;
— Есть русский язык и Python IntelliSense — удобно даже из VS Code;
— В Steam — около 95% восторженных отзывов.
Вот ссылка, если хотите поиграть
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1🙏1
Хотите писать чистый и поддерживаемый код? Давайте разберем, чем отличаются эти три типа методов в Python.
🔹 Методы экземпляра (`self`):
✓ Работают с конкретным объектом
✓ Изменяют атрибуты экземпляра
✓ Доступ к атрибутам класса через
self.__class__ class MyClass:
def method(self):
return "Метод экземпляра", self
🔹 Методы класса (`cls`, `@classmethod`):
✓ Работают с классом в целом
✓ Могут изменять атрибуты класса
✓ Не изменяют атрибуты экземпляра
class MyClass:
@classmethod
def class_method(cls):
return "Метод класса", cls
🔹 Статические методы (`@staticmethod`):
✓ Не принимают self или cls
✓ Не изменяют состояние ни экземпляра, ни класса
✓ Используются для вспомогательных функций
class MyClass:
@staticmethod
def static_method():
return "Статический метод"
🔹 Применение в реальном коде:
class Pizza:
def __init__(self, ingredients):
self.ingredients = ingredients
@classmethod
def margherita(cls):
return cls(["моцарелла", "помидоры"])
@staticmethod
def circle_area(r):
import math
return r ** 2 * math.pi
pizza = Pizza.margherita() # Классовый метод
print(Pizza.circle_area(4)) # Статический метод
🔹 Вывод:
✓ Методы экземпляра изменяют данные конкретного объекта
✓ Методы класса работают с классом и создают альтернативные конструкторы
✓ Статические методы полезны для утилитарных функций
🔹 Курс «Основы IT для непрограммистов»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#синтаксическийсахар
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Если вы часто устаете, меняете позу и вам болит спина — эти три секрета для вас:
1. Кресло наше всё
Первым делом нужно сменить кресло. Не офисное, не широкое — берём кресло с анатомической поддержкой, поддержкой головы и поясницы.
2. Power nap — короткий дневной сон
Говорят, Леонардо да Винчи тоже так делал: спал по 20 минут каждые четыре часа, чтобы быстро восстанавливаться. Научитесь засыпать за секунды: включаю фоновую музыку, режим «не беспокоить» на 15-20 минут, откидываете кресло — и спите.
3. Не пропускаем важное
После пробуждения первым делом проверяем уведомления — это помогает не упустить важное. Смотрим чаты задач, потом уже личные.
Такой 15–20 минут сна даёт заряд бодрости работать максимально продуктивно, не отвлекаясь.
А что помогает быть продуктивным вам?
#режимразраба
Please open Telegram to view this post
VIEW IN TELEGRAM
🥱1
Что происходит в офисе РКН последнюю неделю:
This media is not supported in your browser
VIEW IN TELEGRAM
😁5
Зачем айтишнику математика?
Если вы хотите в Data Science, математика — это ваш пропуск. Не пугайтесь школьных формул, в IT всё логичнее и интереснее.
Мы обновили курс «Математика для разработки AI-моделей». Теперь преподаватели объясняют темы вживую на вебинарах.
Чему научим:
— Работать с матрицами и векторами (основа всех данных);
— Строить прогнозы (линейная регрессия);
— Делать рекомендательные системы (как в YouTube или Netflix).
Это база, которая нужна для старта в ML.
Запись открыта до 9 декабря:
https://clc.to/LojFzw
Если вы хотите в Data Science, математика — это ваш пропуск. Не пугайтесь школьных формул, в IT всё логичнее и интереснее.
Мы обновили курс «Математика для разработки AI-моделей». Теперь преподаватели объясняют темы вживую на вебинарах.
Чему научим:
— Работать с матрицами и векторами (основа всех данных);
— Строить прогнозы (линейная регрессия);
— Делать рекомендательные системы (как в YouTube или Netflix).
Это база, которая нужна для старта в ML.
Запись открыта до 9 декабря:
https://clc.to/LojFzw
👍1
Собрали для вас в карточках 5 стратегий для торгов на собеседовании. Есть ещё несколько, которые подробно описаны в статье.
🔹 Курс «Алгоритмы и структуры данных»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#карьерныйкоммит
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1