Python tests
7.26K subscribers
506 photos
4 videos
47 links
Тесты и задания python разработчиков

По всем вопросам- @notxxx1

@ai_machinelearning_big_data - машинное обучение

@programming_books_it - бесплатные it книги

@pythonl - 🐍

@ArtificialIntelligencedl - AI

@datascienceiot -ds книги
Download Telegram
Media is too big
VIEW IN TELEGRAM
✔️ Как организовать архитектуру большого Python-проекта?

Главная цель - чтобы через полгода было не стыдно открывать код: понятно где что лежит, как это тестировать и куда встраивать новые фичи.

Основные принципы:
- Разделяй по ответственности, а не по типу файла
- Минимизируй связь между слоями
- Явно отделяй ядро домена от инфраструктуры (БД, HTTP, очереди)

Пример базовой структуры:
- app/
- api/ - HTTP handlers, REST, gRPC, CLI
- services/ - бизнес-логика, сценарии use case
- domain/ - сущности, модели, value objects
- repositories/ - работа с БД, кэшами, внешними сервисами
- config/ - настройки, env, схемы конфигурации
- utils/ - вспомогательные функции, которые не завязаны на домен
- tests/ - тесты по тем же модулям, что и в app/
- scripts/ - миграции, разовые утилиты, maintenance

Рекомендации:
- Один входной файл (main.py или cli.py), вся логика - в app/*
- Конфигурацию не хардкодить, а прокидывать через env и config-объекты
- Внутри services работать с абстрактными интерфейсами репозиториев, а не с конкретным ORM
- С самого начала заводить тесты, пусть даже простые, и поддерживать схему tests/ в том же дереве, что и код
- Любой новый модуль должен отвечать на вопрос: к какому слою относится и от кого ему можно зависеть

Если проект растет, не бойся дробить:
- крупный модуль на подмодули
- общие зависимости в отдельный layer (shared, common)
- разные bounded context в отдельные пакеты внутри app/

Архитектура большого проекта - это не про идеальный паттерн, а про понятные границы и минимальный хаос.

https://uproger.com/kak-organizovat-arhitekturu-bolshogo-python-proekta/

Видео: https://www.youtube.com/watch?v=Dk7A8ElHcKE
Please open Telegram to view this post
VIEW IN TELEGRAM
Что выведет код? Перевод на новую строку и пробелы не учитываем, вопрос про списки.
Anonymous Quiz
42%
[1] [1, 1]
47%
[1] [1]
6%
[ ] [ ]
5%
[ ] [1]
🐍 Хитрая ловушка в Python, на которую попадаются даже опытные


matrix = [[0] * 3] * 3

matrix[0][0] = 1
matrix[1].append(9)

print(matrix)
print(len(matrix))
print(len(matrix[0]))


Интуитивно кажется, что это создаёт независимые строки матрицы.
Но на самом деле Python копирует ссылки - все три строки указывают на один и тот же список.

🔍 Поэтому изменение matrix[0][0] или append() влияет сразу на все строки.

🧠 Вывод программы:

[[1, 0, 0, 9],
[1, 0, 0, 9],
[1, 0, 0, 9]]
3
4


✔️ Как правильно создавать матрицу с независимыми строками:

matrix = [[0] * 3 for _ in range(3)]


Теперь каждая строка - отдельный список, и изменения не “протекают” по всей матрице.
Что выведет код ?

Пишите ответ в комментариях
Каким будет вывод этого кода?
Anonymous Quiz
15%
1
9%
1 2
6%
1 2 3 4 5 6 ...
67%
1 3 5 7 9 11 ...
4%
Посмотреть ответ
🖥 На Stepik вышел курс, который учит работать с Docker на реальных проектах.

Владение Docker - навык, который отличает новичка от профи

Сегодня почти всё разворачивается в контейнерах.

Если ты не умеешь работать с Docker, ты медленнее, зависим от чужих настроек и постоянно ловишь баги «у меня локально работает».

Этот курс покажет:

• разобраны все возможные ошибки при работе c Docker
• как упаковывать проекты в контейнеры
• как поднимать целые системы за минуты
• как избегать типичных ошибок в продакшене
• как делать стабильные и повторяемые окружения

Только практика и реальные кейсы - с нуля до уверенного уровня.

🎁 40 процентов скидка действует 48 часов в честь нового года


👉 Записывайся и сделай Docker своим настоящим рабочим инструментом.
Please open Telegram to view this post
VIEW IN TELEGRAM
Каким будет вывод этого кода в консоли?
Anonymous Quiz
10%
{1, 2}
38%
True
19%
False
25%
Это невозможная операция
9%
Посмотреть ответ