Общие рекомендации по #Python:
1) код не должен зависеть от реализаций языка и он должен как можно меньше зависеть от версии
2) метод join быстрее конкатенции (строки)
3) Сравнения с None должны обязательно выполняться с использованием операторов is или is not, а не с помощью операторов сравнения
4) Всегда используйте выражение def, а не присваивание лямбда-выражения к имени.
5)Для последовательностей (строк, списков, кортежей) используйте тот факт, что пустая последовательность есть false
6)Не сравнивайте логические типы(логические переменные) с True и False с помощью ==:
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» (англ. 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! (Пространства имен отличная штука! Давайте использовать их как можно больше!)
Результат:
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! (Пространства имен отличная штука! Давайте использовать их как можно больше!)
Итак. Ты уже дружишь с питоном, тебе понравилось и пришла пора искать работу.
У меня собралось много вопросов с разных собеседований меня и моих знакомых на позицию 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 фреймворкам, базам данных и другим важным темам, но список уже получился большим.
Продолжение следует...)
У меня собралось много вопросов с разных собеседований меня и моих знакомых на позицию 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 фреймворкам, базам данных и другим важным темам, но список уже получился большим.
Продолжение следует...)
Python interning
Shared objects - ranges и специфические объекты неизменяемого типа которые CPython инстанцирует и загружает в память каждый раз при запуске интерпретатора
Более того, python умеет интернировать(кешировать ASCII символы, цифры или _ в памяти во время создания новой строки) строки меньше 20 символов
Это все помогает оптимизировать работу python.
Отсюда вывод:
Python что-то ускоряет, когда может:
Пример 1
Shared objects - ranges и специфические объекты неизменяемого типа которые CPython инстанцирует и загружает в память каждый раз при запуске интерпретатора
Более того, python умеет интернировать(кешировать ASCII символы, цифры или _ в памяти во время создания новой строки) строки меньше 20 символов
Это все помогает оптимизировать работу python.
Отсюда вывод:
Python что-то ускоряет, когда может:
Пример 1
>> a = 'ee'Пример 2
>> a[0] is a[1]
True
>> a='x'
>> b='x'
>> a is b
True
>> a = 'ΩΩ'Обычно python умеет делать много чего неявно, но его можно заставить...
>> a[0] is a[1]
False
>> a='Ω'
>> b='Ω'
>> a is b
False
>> a = 'I hate frontend'
>> b = 'I hate frontend'
>> a is b
False
>> import sys
>> c = sys.intern('I hate frontend')
>> d = sys.intern('I hate frontend')
>> c is d
True
>> c is a
False
Самый простой способ узнать про неявное интернирование - проверить id объекта.>> s='*'
>> for i in range(2):
.. s+='*'
.. print(id(s), s)
140277841241232 **
140277841241232 ***Требования к джуну оn разных компаний(Python)
https://docs.google.com/document/d/17mV7eQLGrGZB98psbPT9u4vN5b4Z_BUpO_2QrQvEonM/edit#heading=h.gjdgxs
https://docs.google.com/document/d/17mV7eQLGrGZB98psbPT9u4vN5b4Z_BUpO_2QrQvEonM/edit#heading=h.gjdgxs
Google Docs
Python_Jun_ожидания
Компетентности уровня junior для Python Компании Raccoon Gang SoftServe NIX 1. Знания основ программирования. + + + 1.1 Типы языков программирования, интерпретируемые, компилируемые; + + + 1.2 Понимание понятий - переменн...