Библиотека Python разработчика | Книги по питону
Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍 По всем вопросам @evgenycarter РКН clck.ru/3Ko7Hq
Ko'proq ko'rsatish📈 Telegram kanali Библиотека Python разработчика | Книги по питону analitikasi
Библиотека Python разработчика | Книги по питону (@bookpython) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 18 321 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 317-o'rinni va Rossiya mintaqasida 36 872-o'rinni egallagan.
📊 Auditoriya ko‘rsatkichlari va dinamika
невідомо sanasidan buyon loyiha tez o‘sib, 18 321 obunachiga ega bo‘ldi.
05 Iyun, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -86 ga, so‘nggi 24 soatda esa -1 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.
- Tasdiqlash holati: Tasdiqlanmagan
- Jalb etish (ER): Auditoriya o‘rtacha 6.08% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining 2.60% ini tashkil etuvchi reaksiyalarni to‘playdi.
- Post qamrovi: Har bir post o‘rtacha 1 114 marta ko‘riladi; birinchi sutkada odatda 477 ta ko‘rish yig‘iladi.
- Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 2 ta reaksiya keladi.
- Tematik yo‘nalishlar: Kontent numbers, yield, модуль, none, декоратор kabi asosiy mavzularga jamlangan.
📝 Tavsif va kontent siyosati
Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
“Погружение в CPython и архитектуру. Разбираем неочевидное поведение (GIL, Memory), Best Practices (SOLID, DDD) и тонкости Django/FastAPI. Решаем задачи с подвохом и оптимизируем алгоритмы. 🐍
По всем вопросам @evgenycarter
РКН clck.ru/3Ko7Hq”
Yuqori yangilanish chastotasi (oxirgi ma’lumot 07 Iyun, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.
def greet(name):
return f"Hello, {name}!"
say_hello = greet # присваиваем функцию переменной
print(say_hello("Alice")) # вызов через переменную
2. Передача функции в качестве аргумента
Функцию можно передать как аргумент другой функции.
def apply_function(func, value):
return func(value)
def square(x):
return x ** 2
result = apply_function(square, 5)
print(result) # вывод: 25
3. Возврат функции из другой функции
Функция может возвращать другую функцию.
def make_multiplier(factor):
def multiplier(x):
return x * factor
return multiplier
double = make_multiplier(2)
print(double(5)) # вывод: 10
4. Хранение функций в структурах данных
Функции можно хранить в списках, словарях и других структурах данных.
def add(x, y):
return x + y
def subtract(x, y):
return x - y
operations = {
'add': add,
'subtract': subtract
}
print(operations['add'](10, 5)) # вывод: 15
print(operations['subtract'](10, 5)) # вывод: 5
5. Анонимные функции (lambda)
Вы можете создавать функции "на лету" с помощью выражения lambda.
multiply = lambda x, y: x * y
print(multiply(3, 4)) # вывод: 12
Таким образом, функции в Python могут использоваться гибко и динамически, что позволяет писать более функциональный и модульный код.
👉@BookPython
def my_function():
x = 10 # локальная переменная
print(x)
my_function() # выведет 10
# print(x) # ошибка, переменная x не существует за пределами функции
2. Enclosing (охватывающая область):
- Переменные, определённые в функциях внешнего уровня по отношению к вложенным функциям. Эти переменные доступны вложенным функциям.
- Пример:
def outer_function():
x = 5
def inner_function():
print(x) # доступ к переменной из охватывающей области
inner_function()
outer_function() # выведет 5
3. Global (глобальная область):
- Это переменные, определённые на уровне модуля, вне каких-либо функций. Они доступны во всём модуле.
- Чтобы изменить глобальную переменную внутри функции, нужно использовать ключевое слово global.
- Пример:
x = 20 # глобальная переменная
def my_function():
global x
x = 10 # изменение глобальной переменной
my_function()
print(x) # выведет 10
4. Built-in (встроенная область):
- Это встроенные в Python функции и имена, такие как len(), sum(), print() и другие. Эти имена доступны в любой точке программы.
- Пример:
print(len([1, 2, 3])) # использует встроенную функцию len
Правила поиска переменной (LEGB)
Когда вы обращаетесь к переменной, Python ищет её значение в следующем порядке:
1. Local: Ищет в локальной области.
2. Enclosing: Ищет в охватывающей области, если функция вложена.
3. Global: Ищет среди глобальных переменных модуля.
4. Built-in: Ищет среди встроенных имён.
Таким образом, Python будет использовать ближайшую переменную в соответствии с этим порядком.
👉@BookPython
try:
result = 10 / 0
except ZeroDivisionError as e:
print(f"Error: {e}")
except Exception as e:
print(f"Unhandled error: {e}")
finally:
print("Cleanup")
#### Создание своих исключений:
class MyCustomError(Exception):
pass
raise MyCustomError("This is a custom error")
8. Операции с числами и математикой
#### Округление и точные вычисления:
import decimal
from decimal import Decimal
decimal.getcontext().prec = 4
x = Decimal('1.12345')
y = Decimal('3.14159')
print(x * y) # Результат с 4 знаками после запятой
#### Математические операции:
import math
print(math.sqrt(16)) # 4.0
print(math.factorial(5)) # 120
9. Модули и пакеты
#### Импортирование модулей:
from my_module import my_function
my_function()
#### Динамический импорт:
module_name = 'math'
module = __import__(module_name)
print(module.sqrt(16)) # 4.0
10. Тестирование
#### Unittest:
import unittest
def add(a, b):
return a + b
class TestMath(unittest.TestCase):
def test_add(self):
self.assertEqual(add(2, 3), 5)
if __name__ == '__main__':
unittest.main()
#### Pytest:
def add(a, b):
return a + b
def test_add():
assert add(2, 3) == 5
11. Работа с данными и библиотеками
#### NumPy для работы с массивами:
import numpy as np
a = np.array([1, 2, 3])
print(a * 2) # Умножение каждого элемента массива на 2
#### Pandas для работы с табличными данными:
import pandas as pd
data = {'Name': ['Alice', 'Bob'], 'Age': [25, 30]}
df = pd.DataFrame(data)
print(df)
12. Полезные утилиты
- Enumerate для индексации:
for index, value in enumerate(['a', 'b', 'c']):
print(index, value)
- Zip для объединения списков:
names = ['Alice', 'Bob']
ages = [25, 30]
for name, age in zip(names, ages):
print(f"{name} is {age} years old")
- Comprehensions для работы со сложными структурами данных:
matrix = [[i * j for j in range(5)] for i in range(5)]
👉@BookPython
lst = [x**2 for x in range(10) if x % 2 == 0]
- Использование map и filter:
squares = list(map(lambda x: x**2, range(10)))
evens = list(filter(lambda x: x % 2 == 0, range(10)))
- Развертывание списка (spreading):
lst1 = [1, 2, 3]
lst2 = [4, 5]
combined = [*lst1, *lst2]
#### Словари (Dict):
- Генерация словаря:
dct = {x: x**2 for x in range(5)}
- Объединение двух словарей:
dct1 = {'a': 1, 'b': 2}
dct2 = {'b': 3, 'c': 4}
merged = {**dct1, **dct2} # {'a': 1, 'b': 3, 'c': 4}
#### Множества (Set):
- Операции с множествами:
set1 = {1, 2, 3}
set2 = {3, 4, 5}
union = set1 | set2 # Объединение
intersection = set1 & set2 # Пересечение
2. Работа с файлами
#### Чтение и запись:
with open('file.txt', 'r') as f:
content = f.read()
with open('file.txt', 'w') as f:
f.write("Hello, World!")
#### Управление JSON:
import json
data = {'key': 'value'}
with open('data.json', 'w') as f:
json.dump(data, f)
with open('data.json', 'r') as f:
data = json.load(f)
3. Декораторы
#### Простой декоратор:
def my_decorator(func):
def wrapper():
print("Before function")
func()
print("After function")
return wrapper
@my_decorator
def say_hello():
print("Hello!")
say_hello()
#### Декоратор с аргументами:
def repeat(n):
def decorator(func):
def wrapper(*args, **kwargs):
for _ in range(n):
func(*args, **kwargs)
return wrapper
return decorator
@repeat(3)
def say_hello():
print("Hello!")
say_hello()
4. Итераторы и генераторы
#### Создание итератора:
class MyIterator:
def __init__(self, start, end):
self.current = start
self.end = end
def __iter__(self):
return self
def __next__(self):
if self.current >= self.end:
raise StopIteration
self.current += 1
return self.current - 1
for num in MyIterator(1, 5):
print(num)
#### Генераторы:
def my_generator():
for i in range(3):
yield i
for value in my_generator():
print(value)
#### Генераторы с обработкой состояния:
def countdown(n):
while n > 0:
yield n
n -= 1
5. Менеджеры контекста
#### Создание собственного менеджера контекста:
class MyContextManager:
def __enter__(self):
print("Entering context")
return self
def __exit__(self, exc_type, exc_val, exc_tb):
print("Exiting context")
with MyContextManager():
print("Inside context")
#### Менеджеры контекста с contextlib:
from contextlib import contextmanager
@contextmanager
def my_context():
print("Entering")
yield
print("Exiting")
with my_context():
print("Inside")
6. Асинхронное программирование
#### Асинхронные функции и await:
import asyncio
async def say_hello():
print("Hello")
await asyncio.sleep(1)
print("World")
asyncio.run(say_hello())
#### Запуск нескольких задач одновременно:
async def task1():
await asyncio.sleep(1)
print("Task 1 done")
async def task2():
await asyncio.sleep(2)
print("Task 2 done")
async def main():
await asyncio.gather(task1(), task2())
asyncio.run(main())
👉@BookPythonseed() в модуле random в Python используется для инициализации генератора случайных чисел. По умолчанию генератор случайных чисел использует текущее системное время, чтобы генерировать случайные числа, но если задать определённое значение с помощью функции seed(), последовательность случайных чисел станет предсказуемой.
Пример использования:
import random
random.seed(10)
print(random.random()) # Всегда будет генерировать одно и то же число
Основные моменты:
- Если вызвать random.seed() с одним и тем же значением несколько раз, генератор будет создавать одну и ту же последовательность случайных чисел.
- Если seed() не вызывается или вызывается без аргументов, генерация случайных чисел будет происходить на основе текущего времени или другого системного источника.
Таким образом, использование seed() полезно, когда требуется воспроизвести результаты, например, в тестах или для отладки.
👉@BookPython
Endi mavjud! Telegram Tadqiqoti 2025 — yilning asosiy insaytlari 
