variables русском - Что такое соглашение об именах в Python для имен переменных и функций?




запись переменную (11)

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

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

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

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

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


Answers

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

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

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

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

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


Большинство людей-питонов предпочитают подчеркивания, но даже я использую python с тех пор, как уже более 5 лет, мне все еще не нравятся. Они просто выглядят уродливыми для меня, но, возможно, это все Java в моей голове.

Мне просто нравится CamelCase лучше, так как он лучше подходит для классов, названных классами. Логичнее иметь SomeClass.doSomething() чем SomeClass.do_something() . Если вы посмотрите в глобальном модульном индексе в python, вы найдете и то, и другое из-за того, что это коллекция библиотек из разных источников, которые росли сверхурочно, а не то, что было разработано одной компанией, такой как Sun, со строгими правилами кодирования , Я бы сказал, что нижняя строка: используйте то, что вам нравится лучше, это просто вопрос личного вкуса.


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

Я предпочитаю использовать lower_case_with_underscores для переменных и mixedCase для методов и функций делает код более явным и читаемым. Таким образом, после того, как «явный яд лучше, чем неявный» и «Чтение читаемости» Zen of Python,


далее к тому, что ответил @JohnTESlade. В руководстве по стилю python от Google содержатся некоторые довольно аккуратные рекомендации,

Имена, которые следует избегать

  • одиночные имена символов, кроме счетчиков или итераторов
  • тире (-) в любом имени пакета / модуля
  • \__double_leading_and_trailing_underscore__ names (зарезервированы Python)

Соглашение об именовании

  • «Внутренний» означает внутренний модуль или защищенный или закрытый внутри класса.
  • Прединвестиция одного подчеркивания (_) имеет некоторую поддержку для защиты переменных и функций модуля (не включаемых в import * from). Превращение двойного подчеркивания (__) в переменную или метод экземпляра эффективно служит для того, чтобы сделать переменную или метод закрытыми для своего класса (с использованием манипуляции с именем).
  • Поместите связанные классы и функции верхнего уровня вместе в модуль. В отличие от Java, нет необходимости ограничивать себя одним классом на модуль.
  • Используйте CapWords для имен классов, но lower_with_under.py для имен модулей. Хотя существует много существующих модулей с именем CapWords.py , теперь это обескураживает, потому что это запутывает, когда модуль называется именем класса. («wait - я написал import StringIO или from StringIO import StringIO ?»)

Рекомендации, взятые из рекомендаций Гвидо


Как правило, следуют соглашениям, используемым в стандартной библиотеке языка.


Лично я пытаюсь использовать CamelCase для классов, методов и функций mixedCase. Переменные обычно выделяются (если я помню). Таким образом, я могу сразу сказать, что именно я вызываю, вместо того, чтобы все выглядело одинаково.


См. Python PEP 8 .

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

mixedCase допускается только в контекстах, где это уже преобладает стиль

Переменные ...

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

Лично я отклоняюсь от этого, потому что я также предпочитаю mixedCase по lower_case для своих собственных проектов.


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

имя_компьютера, имя_пакета, имя_класса, имя_пользователя, имя_экземпляра, имя_пользователя, GLOBAL_CONSTANT_NAME, имя_домена_домена, имя_экземпляра, имя_функции_файла, local_var_name

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


Существует PEP 8 , как показывают другие ответы, но PEP 8 является только стилем для стандартной библиотеки, и он воспринимается только как Евангелие. Одним из наиболее частых отклонений PEP 8 для других фрагментов кода является именование переменных, особенно для методов. Нет единого преобладающего стиля, хотя, учитывая объем кода, который использует mixedCase, если кто-то должен был провести строгую перепись, вероятно, в конечном итоге окажется версия PEP 8 с mixedCase. Существует немного другого отклонения от PEP 8, что довольно распространено.


Стиль кодирования обычно является частью внутренних правил политики / конвенций организации, но я думаю, что в общем случае стиль all_lower_case_underscore_separator (также называемый snake_case) наиболее распространен в python.


Тернарный оператор на разных языках программирования

Здесь я просто попытаюсь показать некоторое важное различие в ternary operator между двумя языками программирования.

Тернарный оператор в Javascript

var a = true ? 1 : 0;
# 1
var b = false ? 1 : 0;
# 0

Тернарный оператор в Ruby

a = true ? 1 : 0
# 1
b = false ? 1 : 0
# 0

Тернарный оператор в Скале

val a = true ? 1 | 0
# 1
val b = false ? 1 | 0
# 0

Тернарный оператор в программировании R

a <- if (TRUE) 1 else 0
# 1
b <- if (FALSE) 1 else 0
# 0

Тернарный оператор в Python

a = 1 if True else 0
# 1
b = 1 if False else 0
# 0

Теперь вы можете увидеть красоту языка python. его читабельность и удобство обслуживания.







python variables function naming-conventions