---
title: Правила оформления кода
---
{%hackmd theme-dark %}
###### tags: `python`
[TOC]
# Импорты
Импорты всегда помещаются в начале файла, сразу после комментариев к модулю и строк документации, и перед объявлением констант.
Импорты должны быть сгруппированы в следующем порядке:
1. импорты из стандартной библиотеки
1. импорты сторонних библиотек
1. импорты модулей текущего проекта
# Наименование переменных
Переменные именуются маленькими буквами, слова разделяются нижним подчёркиванием:
```python
my_variable = 123
```
Константы объявляются на уровне модуля и записываются только заглавными буквами, а слова разделяются символами подчеркивания:
```python
SQRT_3 = 1,73
```
# Наименование функций
Функции именуются маленькими буквами, слова разделяются нижним подчёркиванием:
```python
def my_function():
pass
```
# Аргументы функций
При наличии большого количества аргументов располагаем их в несколько строк:
```python=
def long_function_name(
var_one,
var_two,
var_three,
var_four):
print(var_one)
```
# Наименования классов
CapitalizedWords (слова с заглавными буквами, или CapWords, или CamelCase)
# Форматирование строк
Применяем **только** конструкции вида
```python
f"text with {var1} and {var2}"
```
# Комментарии
| **Код комментируем обязательно!** |
| ------------------------------- |
* Описываем все неявные вещи, логику работы программы
* Сразу пишем блоки **:TO DO:**
* Для для всех публичных модулей, функций, классов, методов пишем строки документации:
```python
def my_cool_func(a, b, c):
"""
Определяет жопинус пусинуса и печатает его [опиционально]
:param a: степень жопинуса
:param b: тип пусинуса
:param c:печатать (True) или ytn (False)
:return:
"""
joppus = foo(a, b)
if c:
print joppus
return joppus
```
# Многострочные конструкции
Закрывающие круглые/квадратные/фигурные скобки в многострочных конструкциях должны находиться под первым непробельным символом последней строки списка:
```python=
my_list = [
1, 2, 3,
4, 5, 6,
]
result = some_function_that_takes_arguments(
'a', 'b', 'c',
'd', 'e', 'f',
)
```