Вопрос-Ответ

What is the naming convention in Python for variables and functions?

Каково соглашение об именовании в Python переменных и функций?

Исходя из опыта работы с C #, соглашение об именовании переменных и методов обычно является либо camelCase, либо PascalCase:

// C# example
string thisIsMyVariable = "a"
public void ThisIsMyMethod()

В Python я видел вышеупомянутое, но я также видел, что используется snake_case:

# python example
this_is_my_variable = 'a'
def this_is_my_function():

Существует ли более предпочтительный, окончательный стиль кодирования для Python?

Переведено автоматически
Ответ 1

Смотрите Python PEP 8: имена функций и переменных:


Имена функций должны быть в нижнем регистре, со словами, разделенными подчеркиванием, по мере необходимости для улучшения удобочитаемости.


Имена переменных соответствуют тому же соглашению, что и имена функций.


mixedCase допускается только в контекстах, где это уже преобладающий стиль (например, threading.py), для сохранения обратной совместимости.


Ответ 2

В Руководстве по стилю Google Python используется следующее соглашение:


module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name.


Аналогичная схема именования должна применяться к CLASS_CONSTANT_NAME

Ответ 3

Дэвид Гудгер (в "Code Like a Pythonista" здесь) следующим образом описывает рекомендации PEP 8:


  • joined_lower для функций, методов, атрибутов, переменных


  • joined_lower или ALL_CAPS для констант


  • StudlyCaps для классов


  • camelCase только для соответствия уже существующим соглашениям


Ответ 4

Как допускает Руководство по стилю для кода Python,


Соглашения об именовании библиотеки Python немного запутаны, поэтому мы никогда не получим их полностью согласованными


Обратите внимание, что это относится только к стандартной библиотеке Python. Если они не могут получить это согласованное соглашение, то вряд ли есть большая надежда на наличие общепринятого соглашения для всего кода Python, не так ли?

Из этого и приведенного здесь обсуждения я бы сделал вывод, что это не ужасный грех, если продолжать использовать, например, Java или C # (четкие и устоявшиеся) соглашения об именовании переменных и функций при переходе на Python. Имея в виду, конечно, что лучше всего придерживаться любого преобладающего стиля для кодовой базы / проекта / команды. Как указано в Руководстве по стилю Python, внутренняя согласованность имеет наибольшее значение.

Не стесняйтесь называть меня еретиком. :-) Как и в OP, я не "питонист", по крайней мере пока.

python