Лучшее именование списка Python, кроме "list" - PullRequest
11 голосов
/ 16 октября 2011

Лучше не называть переменные списка "списком"? Так как это противоречит зарезервированному ключевому слову python. Тогда, что лучше назвать? «input_list» звучит немного неловко.

Я знаю, что это может быть связано с конкретной проблемой, но, скажем, у меня есть функция быстрой сортировки, тогда quick_sort (unsorted_list) все еще довольно длинный, поскольку список, переданный в функцию сортировки, явно не отсортирован по контексту.

Есть идеи?

Ответы [ 7 ]

20 голосов
/ 16 октября 2011

Мне нравится называть это множественным числом того, что в нем. Так, например, если у меня есть список имен, я называю его names, а затем могу написать:

for name in names:

который, я думаю, выглядит довольно красиво. Но, как правило, для собственного здравого смысла вы должны называть свои переменные, чтобы вы могли знать, какие они есть, просто по названию. Это соглашение имеет дополнительное преимущество, заключающееся в том, что он не зависит от типа, как и сам Python, потому что names может быть любым итерируемым объектом, таким как кортеж, dict или ваш собственный (итеративный) объект. Вы можете использовать for name in names для любого из них, и если бы у вас был кортеж с именем names_list, это было бы просто странно.

(добавлено из комментария ниже :) Есть несколько ситуаций, когда вам не нужно это делать. Использование канонической переменной, такой как i, для индексации короткого цикла - это нормально, потому что обычно используется i. Если ваша переменная используется в коде, состоящем более чем из одной страницы, и поэтому вы не можете увидеть весь срок ее жизни сразу, вы должны дать ей разумное имя.

6 голосов
/ 16 октября 2011
goats

Имена переменных должны ссылаться на то, чем они являются, а не просто на то, какого они типа

5 голосов
/ 16 октября 2011

Python означает читабельность.Поэтому в основном вы должны называть переменные, которые способствуют удобочитаемости.См. PEP20 .Вы должны иметь только общее правило согласованности и нарушать эту согласованность в следующих ситуациях:

  1. При применении этого правила код станет менее читабельным, даже для того, кто привык читатькод, который следует правилам.

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

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

2 голосов
/ 16 октября 2011

А как насчет L?

1 голос
/ 16 октября 2011

Я использую соглашение об именах, основанное на описательном имени и типе.(Думаю, я узнал об этом из поста в блоге Джеффа Этвуда, но не могу его найти.)

goats_list
for goat in goats_list : 
    goat.bleat()

cow_hash = {}

и т. Д.

Что-нибудь более сложное (list_list_hash_list) Я создаю класс.

1 голос
/ 16 октября 2011

Почему бы просто не использовать unsorted?Я предпочитаю иметь имена, которые передают идеи, а не типы данных.Существуют особые случаи, когда важен тип переменной.Но в большинстве случаев это очевидно из контекста - как в вашем случае.Быстрая сортировка, очевидно, работает со списком.

0 голосов
/ 16 октября 2011

Просто используйте lst или seq (для последовательности)

...