- Lolz
- Автор темы
- Команда форума
- 231
Как не позориться перед собратьями, пишем красивый код на Python
Всем доброго времени суток. Товарищи форумчане, начинающие питонисты, пора писать красивый код.
Okay, Let's go!
Я надеюсь ты знаешь, что такое pep8. Нет? Это плохо, но поправимо. Для начала рассмотрим основные стандарты, без которых ты будешь выглядеть в глазах других обезьяной. Запомни, когда пишешь код на python нужно:
1. Соблюдать отступы в 4 пробела.
2. Отступы до и после знаков =, ==, >, <, <=, >=, !=
3. Отступ после "," и ":" (после двоеточия в объявлении словаря/json)
4. Названия переменных и функций должны быть написаны в snake_case (т.е. все слова начинаются с маленькой буквы, а для логического разделения используется символ _ ), исключением из этого правила являются константы (неизменные), которые пишутся полностью заглавными буквами, а также имена классов должны писаться в соответствии с CamelCase(каждое новое слово с большой буквы без каких-либо разделителей)
5. Импорт разных модулей должен идти с новой строки (т.е. import sys, os - неправильно)
6. Импорт разных компонентов из одного модуля должен идти единой строкой (from subprocess import Popen, PIPE)
Вообще их гораздо больше, но для того, чтобы не потерять уважение коллег хватит соблюдать эти 6 правил. Ещё хочу порекомендовать autopep8, который поможет с первыми тремя пунктами. Данный модуль имеет интеграцию с vscode, активируется при нажатии Shift+Alt+F.
Дальше хочу поговорить о типизации. Как ты знаешь python это динамически типизированный язык. То есть переменная, которой было присвоено значение 12 может поменять его на "-&2" Или даже на {"j": \[23]}. Это говорит о том, что если ты забудешь какого типа должна быть переменная, то ты можешь потратить от нескольких минут до нескольких часов за таким интереснейшим делом как дебаг. А чтобы не тратить столько времени на поиск ну уж очень глупых ошибок, я хочу предложить способ, который исключит их.
Есть такая штука как типизация функций. То есть мы изначально говорим, что условно наша give_money функция принимает на вход только число, а на выходе отдаëт строку. Сразу пример:
Итак, общая конструкция следующая, после названия каждой переменной ставим двоеточие пробел и тип данных, а тип данных, который возвращает функция идëт после еë имён и имеет вид " -> тип". Иногда возникают ситуации, когда нужно принимать несколько типов данных, например int или float, или возвращать например dict или None. В данном случае конструкции остаëтся той же, но теперь тип данных записывает как int|float и dict|None, то есть тип|другой тип|ещё тип. Я считаю, что на то, чтобы разобраться с типизированием ты потратишь максимум пару часов. По сравнению с тем временем, которое ты сэкономишь на дебаги это ничтожно мало.
В общем и целом это всё. Конечно, если говнокод написан по стандартам, то это не лишает его заслуженного звания. Но как минимум практика с типизацией поможет сделать код менее говëнным.
А на этом всё! Всем добра и только чистого кода
Всем доброго времени суток. Товарищи форумчане, начинающие питонисты, пора писать красивый код.
Okay, Let's go!
Я надеюсь ты знаешь, что такое pep8. Нет? Это плохо, но поправимо. Для начала рассмотрим основные стандарты, без которых ты будешь выглядеть в глазах других обезьяной. Запомни, когда пишешь код на python нужно:
1. Соблюдать отступы в 4 пробела.
2. Отступы до и после знаков =, ==, >, <, <=, >=, !=
3. Отступ после "," и ":" (после двоеточия в объявлении словаря/json)
4. Названия переменных и функций должны быть написаны в snake_case (т.е. все слова начинаются с маленькой буквы, а для логического разделения используется символ _ ), исключением из этого правила являются константы (неизменные), которые пишутся полностью заглавными буквами, а также имена классов должны писаться в соответствии с CamelCase(каждое новое слово с большой буквы без каких-либо разделителей)
5. Импорт разных модулей должен идти с новой строки (т.е. import sys, os - неправильно)
6. Импорт разных компонентов из одного модуля должен идти единой строкой (from subprocess import Popen, PIPE)
Вообще их гораздо больше, но для того, чтобы не потерять уважение коллег хватит соблюдать эти 6 правил. Ещё хочу порекомендовать autopep8, который поможет с первыми тремя пунктами. Данный модуль имеет интеграцию с vscode, активируется при нажатии Shift+Alt+F.
Дальше хочу поговорить о типизации. Как ты знаешь python это динамически типизированный язык. То есть переменная, которой было присвоено значение 12 может поменять его на "-&2" Или даже на {"j": \[23]}. Это говорит о том, что если ты забудешь какого типа должна быть переменная, то ты можешь потратить от нескольких минут до нескольких часов за таким интереснейшим делом как дебаг. А чтобы не тратить столько времени на поиск ну уж очень глупых ошибок, я хочу предложить способ, который исключит их.
Есть такая штука как типизация функций. То есть мы изначально говорим, что условно наша give_money функция принимает на вход только число, а на выходе отдаëт строку. Сразу пример:
Код Код:
def give_money(money: int) -> str:
if money > 10:
return "или лесом"
return "Лааадно, держи"
Итак, общая конструкция следующая, после названия каждой переменной ставим двоеточие пробел и тип данных, а тип данных, который возвращает функция идëт после еë имён и имеет вид " -> тип". Иногда возникают ситуации, когда нужно принимать несколько типов данных, например int или float, или возвращать например dict или None. В данном случае конструкции остаëтся той же, но теперь тип данных записывает как int|float и dict|None, то есть тип|другой тип|ещё тип. Я считаю, что на то, чтобы разобраться с типизированием ты потратишь максимум пару часов. По сравнению с тем временем, которое ты сэкономишь на дебаги это ничтожно мало.
В общем и целом это всё. Конечно, если говнокод написан по стандартам, то это не лишает его заслуженного звания. Но как минимум практика с типизацией поможет сделать код менее говëнным.
А на этом всё! Всем добра и только чистого кода