Junior Python School
706 subscribers
92 photos
29 links
Surprising the python community with pure python 🔝

Moving channel from Russian to English.


Enthusiastic reviews can be written to @pythonjuniorschoolacc ❤️
Download Telegram
Channel created
Общие рекомендации по #Python:
1) код не должен зависеть от реализаций языка и он должен как можно меньше зависеть от версии
2) метод join быстрее конкатенции (строки)
3) Сравнения с None должны обязательно выполняться с использованием операторов is или is not, а не с помощью операторов сравнения
4) Всегда используйте выражение def, а не присваивание лямбда-выражения к имени.
5)Для последовательностей (строк, списков, кортежей) используйте тот факт, что пустая последовательность есть false
6)Не сравнивайте логические типы(логические переменные) с True и False с помощью ==:
PEP

«Предложения по развитию #Python» (англ. Python Enhancement Proposals, PEP) - предложения по улучшению языка от опытных разработчиков на Python.
PEP 8 - это руководство по стилю о том, как писать легкочитаемый код. Оно содержит ряд руководящих принципов касательно имен переменных. Кратко перечислим их:
- имена модулей должны быть короткими и содержать только строчные буквы;
- имена классов должны быть в стиле CapWords;
- большинство переменных и имен функций должны писаться строчными_буквами_с_подчеркиваниями;
- постоянные (переменные, которые никогда не меняют значения) должны писаться ЗАГЛАВНЫМИ_БУКВАМИ_С_ПОДЧЕРКИВАНИЯМИ;
- имена, которые будут пересекаться с ключевыми словами Python (например, «class» или «if»), должны иметь замыкающее подчеркивание.

PEP 8 также рекомендует использовать пробелы вокруг операторов и после запятых, чтобы улучшить читаемость кода.
Чтобы открыть «Дзен языка #Python», используйте команду import this .

Результат:
The Zen of Python, by Tim Peters (Тим Питерс «Дзен языка Python»)

Beautiful is better than ugly (Лучше красиво, чем некрасиво)
Explicit is better than implicit (Лучше явно, чем неявно)
Simple is better than complex (Простой код лучше, чем сложный)
Complex is better than complicated (Сложный код лучше, чем запутанный)
Flat is better than nested (Плоский код лучше, чем вложенный)
Sparse is better than dense (Разреженный код лучше, чем плотный)
Readability counts (Читаемостью нельзя пренебрегать)
Special cases aren't special enough to break the rules (Особые случаи не настолько особенные, чтобы нарушать правила)
Although practicality beats purity (При этом практичность важнее безупречности)
Errors should never pass silently (Ошибки никогда не должны замалчиваться)
Unless explicitly silenced (Замалчивать можно только явно)
In the face of ambiguity, refuse the temptation to guess (Встретив двусмысленность, отбрось искушение угадать)
There should be one-and preferably only one-obvious way to do it (Должен существовать один - и, желательно, только один - очевидный способ сделать что-либо)
Although that way may not be obvious at first unless you're Dutch (Он будет очевиден сразу, только если вы голландец)
Now is better than never (Сейчас лучше, чем никогда)
Although never is often better than *right* now (Хотя никогда зачастую лучше, чем прямо сейчас)
If the implementation is hard to explain, it's a bad idea (Если реализацию сложно объяснить - идея плохая)
If the implementation is easy to explain, it may be a good idea (Если реализацию легко объяснить - идея, возможно, хорошая)
Namespaces are one honking great idea-let's do more of those! (Пространства имен отличная штука! Давайте использовать их как можно больше!)
РЕКОМЕНДАЦИИ ПО НАПРАВЛЕНИЮ #PYTHON
Channel name was changed to «Архив начинающего программиста Python»
красивая иллюстрация рекурсии
#алгоритм быстрого возведения в степень.
Алгоритм взят из http://e-maxx.ru/algo/binary_pow
реализация на Python
генерация всех перестановок

Задача:
сгенерировать все перестановки последовательности от 1 до n
Рекомендую вначале подумать над алгоритмом, а потом уже читать мой код
Небольшая таблица полезных данных о языках программирования.
Привет из Википедии
Итак. Ты уже дружишь с питоном, тебе понравилось и пришла пора искать работу.
У меня собралось много вопросов с разных собеседований меня и моих знакомых на позицию trainee/junior python dev.
Начнем с начала

Вопросы по Python для питонистов-джуниоров
1️⃣ Базовые вопросы
Какие существуют типы данных в python 3?
Какие из них изменяемые, а какие нет?
Можно ли создать множество состоящее из других множеств?
Что нужно сделать с классом, чтобы он мог стать ключом словаря?
Как работает scope в python?
2️⃣ Вопросы о вашей мотивации в python
Почему Вы выбрали python?
В чем достоинства и недостатки python как языка общего назначения?
Для каких задач используется python?
Пробовали ли Вы python 2?
Отличие python 3 и python 2.
Что нового появилось в python 3.7?
Смотрели ли вы на python 3.8?
Дзен python помните?
3️⃣ Стандартная библиотека
Какие модули стандартной библиотеки вы использовали?
Что вы знаете про модули collections, pickle?
Как работает идея абстрактных классов в python?
4️⃣ Основные вопросы python
*args, **kwargs в python?
Можно ли в python сделать бесконечную рекурсию?
Анонимные функции в python
Итератор и генератор.
Генератор выражений
Магические методы.
Магические методы __new__ и __init__
Как работает __slots
__?
Структура Exceptions в python 3.
Как под капотом реализован список и словарь в python.
Built-in functions в python.
Что значит, что объект сallable.
Что такое декоратор?
Встроенные декораторы
staticmethod, classmethod - в чем разница?
Может ли classmethod быть абстрактным в терминах python 3?
Менеджеры контекста
Как в питоне реализованы public, private и protected methods?
Как импортировать приватный метод из стороннего модуля?
Классы нового стиля в python.
5️⃣ Продвинутый python
Python сразу интерпретируется интерпретатором или есть промежуточный шаг?
Диамантовая проблема в python.
MRO в python 3.
Декораторы с параметрами
Написать менеджер контекста через класс и через функцию.
Дескрипторы
Метаклассы

Удачи! Тут еще нет, как минимум, большей части вопросов про ООП, шаблонам проектирования, web разработке, тестированию, многопоточности, devops, гиту, frontendу, python фреймворкам, базам данных и другим важным темам, но список уже получился большим.
Продолжение следует...)