Библиотека Python разработчика | Книги по питону
18.1K subscribers
1.06K photos
403 videos
82 files
1.23K links
Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍

По всем вопросам @evgenycarter

РКН clck.ru/3Ko7Hq
Download Telegram
🔥 Как ускорить Python-код в 10 раз?

Сегодня покажу вам мощный инструмент для оптимизации кода - Numba. Это библиотека, которая позволяет компилировать Python-функции в машинный код, используя JIT-компилятор.

🚀 Как это работает?

Numba использует LLVM для компиляции кода во время выполнения, превращая Python в код, близкий по скорости к C.

Пример

Допустим, у нас есть функция, вычисляющая сумму квадратов чисел:


import numpy as np
import time

def sum_of_squares(n):
result = 0
for i in range(n):
result += i ** 2
return result

n = 10**7
start = time.time()
sum_of_squares(n)
print("Обычный Python:", time.time() - start)


Теперь ускорим её с помощью Numba:


from numba import jit

@jit(nopython=True)
def sum_of_squares_numba(n):
result = 0
for i in range(n):
result += i ** 2
return result

start = time.time()
sum_of_squares_numba(n)
print("С Numba:", time.time() - start)


📊 Результат:

Код на чистом Python выполняется ~5-10 раз медленнее, чем с Numba.
Numba особенно полезна для математических вычислений и обработки массивов.
Простая аннотация @jit(nopython=True) уже даёт мощный прирост скорости!

Где применять?

Численные расчёты
Обработку данных
Алгоритмы машинного обучения

Попробуйте Numba и напишите в комментариях, удалось ли вам ускорить свой код!

📲 Мы в MAX

👉@BookPython
1
🚀 5 крутых Python-фишек, о которых знают не все

Python — мощный и удобный язык, но даже опытные разработчики иногда не знают всех его возможностей. Сегодня я покажу пять полезных трюков, которые могут упростить вашу работу.


1. Используем else в for и while
Многие не знают, что в Python циклы for и while могут иметь блок else. Он выполняется, если цикл не был прерван через break.

Пример:

numbers = [1, 3, 5, 7]

for num in numbers:
if num % 2 == 0:
print("Есть чётное число!")
break
else:
print("Чётных чисел нет.")

🔹 Если в списке нет чётных чисел, сработает else.



2. "Распаковка" переменных
В Python можно присваивать сразу несколько значений одной строкой.

Пример:

a, b, c = 1, 2, 3
print(a, b, c) # 1 2 3


Можно менять местами значения без временной переменной:

x, y = 5, 10
x, y = y, x
print(x, y) # 10 5




3. Используем _ в больших числах
Чтобы числа легче читались, можно разделять разряды _.

Пример:

big_number = 1_000_000_000
print(big_number) # 1000000000

Это просто синтаксический сахар, Python игнорирует _ при вычислениях.



4. Получаем значение из словаря с запасным вариантом
Вместо if key in dict можно использовать .get(), чтобы избежать KeyError.

Пример:

user_data = {"name": "Alice"}

age = user_data.get("age", 18) # Если ключа "age" нет, вернётся 18
print(age) # 18




5. "Распаковка" списка в аргументы функции
Оператор * позволяет передавать элементы списка в функцию как отдельные аргументы.

Пример:

def greet(name, age):
print(f"Привет, {name}! Тебе {age} лет.")

user_info = ["Иван", 25]
greet(*user_info) # Привет, Иван! Тебе 25 лет.

То же работает со словарями через **:

user_dict = {"name": "Ольга", "age": 30}
greet(**user_dict)



Эти фишки делают код лаконичнее и понятнее.

📲 Мы в MAX

👉@BookPython
👍4🔥2