I’m a Python beginner, I read pep standards which must follow while programming in python
http://legacy.python.org/dev/peps/pep-0008
Now I have a doubt. As they have mentioned that you should not put spaces around the equal sign while using keyword argument or a default parameter value in functions or Dict.
For example
YES
def myfunc(key1=val1, key2=val2, key3=val3)
NO
def myfunc(key1 = val1, key2 = val2, key3 = val3)
Thats fine but what if I break down these in multiple lines. something like this(when we have many parameters or long name)
def myfunc(key1=val1,
key2=val2,
key3=val3)
In this case, I think, we should put space around the equal sign. am I correct. because these all are about readability but I’m just curious if there is standard for this too. Looking for best practices.
Same thing for Dict.
new_dict= Dict(
key1=val1,
key2=val2,
key3=val3
)
And should I put a comma after last argument in dict unlike example mentioned above, I didn’t put a comma after last value (key3=val3)
asked Jul 17, 2014 at 18:18
user3810188user3810188
3011 gold badge3 silver badges14 bronze badges
1
Thats fine but what if I break down these in multiple lines. something like this(when we have many parameters or long name)
def myfunc(key1=val1, key2=val2, key3=val3)
In the code you give, you are not putting whitespace around the =
, so you are complying with pep8 in respect of operator spacing (your indentation does not comply with pep8).
In general, you can write your code however you like. If you don’t comply with pep8, other people generally won’t find your code as easy to read. If you have local standards within your company, that should supercede pep8. If you don’t have standards that direct you to violate pep8, your colleagues will likely hate you for breaking pep8.
If you don’t have a standard at all, future you will also hate present you.
answered Jul 17, 2014 at 18:23
MarcinMarcin
47.9k17 gold badges127 silver badges199 bronze badges
PEP8 clearly says:
Don’t use spaces around the = sign when used to indicate a keyword
argument or a default parameter value.
You don’t need to put white spaces around the equal sign in both cases.
If you are not sure whether your code follows PEP8 standard or not, use flake8
static code analysis tool. It would raise warnings in case of code style violations.
Example:
Consider you have extra whitespaces around the equal signs:
def myfunc(key1 = 'val1',
key2 = 'val2',
key3 = 'val3'):
return key1, key2, key3
flake8
outputs a warning for every unexpected whitespace:
$ flake8 test.py
test.py:3:16: E251 unexpected spaces around keyword / parameter equals
test.py:3:18: E251 unexpected spaces around keyword / parameter equals
test.py:4:16: E251 unexpected spaces around keyword / parameter equals
test.py:4:18: E251 unexpected spaces around keyword / parameter equals
test.py:5:16: E251 unexpected spaces around keyword / parameter equals
test.py:5:18: E251 unexpected spaces around keyword / parameter equals
answered Jul 17, 2014 at 18:26
alecxealecxe
455k116 gold badges1061 silver badges1180 bronze badges
7
No. Don’t put spaces around equal signs when declaring kwargs. Think of it this way: If you are just skimming lines of code, you want to train your eyes to see the difference between the assignment operator used during ordinary program flow (spam = True) and a kwarg, especially if it’s on its own line (spam=True).
As for a trailing comma, I have always felt that a trailing comma suggests to a fellow team member or reader that I feel the list, dict, set of args, etc. might be subject to expansion in the future. If I’m fairly certain that the structure represents its mature state, I remove it.
answered Jul 17, 2014 at 18:23
jMylesjMyles
11.6k6 gold badges42 silver badges56 bronze badges
1
Я начинающий Python, я читаю стандарты pep, которые должны следовать при программировании на python. Http://legacy.python.org/dev/peps/pep-0008
Теперь у меня есть сомнения. Поскольку они упомянули, что вы не должны помещать пробелы вокруг знака равенства при использовании аргумента ключевого слова или значения параметра по умолчанию в функциях или в Dict.
Например
ДА
def myfunc(key1=val1, key2=val2, key3=val3)
НЕТ
def myfunc(key1 = val1, key2 = val2, key3 = val3)
Thats штраф, но что, если я сломаю их в несколько строк. что-то вроде этого (когда у нас много параметров или длинное имя)
def myfunc(key1=val1, key2=val2, key3=val3)
В этом случае, я думаю, мы должны положить пространство вокруг знака равенства. я прав. потому что все это о читаемости, но мне просто любопытно, есть ли для этого стандарт. Ищите лучшие практики.
То же самое для Дикта.
new_dict= Dict(
key1=val1,
key2=val2,
key3=val3
)
И я должен поместить запятую после последнего аргумента в dict в отличие от упомянутого выше примера, я не поместил запятую после последнего значения (key3 = val3)
17 июль 2014, в 20:41
Поделиться
Источник
3 ответа
PEP8 четко говорит:
Не используйте пробелы вокруг знака = при использовании для указания аргумента ключевого слова или значения параметра по умолчанию.
В обоих случаях вам не нужно помещать пробелы вокруг знака равенства.
Если вы не уверены, соответствует ли ваш код стандарту PEP8 или нет, используйте инструмент анализа статического кода flake8
. Это приведет к предупреждению в случае нарушения стиля кода.
Пример:
У вас есть дополнительные пробелы вокруг равных знаков:
def myfunc(key1 = 'val1',
key2 = 'val2',
key3 = 'val3'):
return key1, key2, key3
flake8
выводит предупреждение для каждого неожиданного пробела:
$ flake8 test.py
test.py:3:16: E251 unexpected spaces around keyword / parameter equals
test.py:3:18: E251 unexpected spaces around keyword / parameter equals
test.py:4:16: E251 unexpected spaces around keyword / parameter equals
test.py:4:18: E251 unexpected spaces around keyword / parameter equals
test.py:5:16: E251 unexpected spaces around keyword / parameter equals
test.py:5:18: E251 unexpected spaces around keyword / parameter equals
alecxe
17 июль 2014, в 16:21
Поделиться
Thats штраф, но что, если я сломаю их в несколько строк. что-то вроде этого (когда у нас много параметров или длинное имя)
def myfunc(key1=val1, key2=val2, key3=val3)
В коде, который вы указываете, вы не помещаете пробелы вокруг =
, так что вы соблюдаете pep8 в отношении расстояния между операторами (ваш отступ не соответствует pep8).
В общем, вы можете написать свой код, как вам нравится. Если вы не согласны с pep8, другие люди обычно не смогут найти ваш код как легко читаемый. Если у вас есть локальные стандарты в вашей компании, это должно быть отменено pep8. Если у вас нет стандартов, которые заставляют вас нарушать pep8, ваши коллеги, скорее всего, ненавидят вас за нарушение pep8.
Если у вас нет стандарта вообще, в будущем вы также будете ненавидеть подарок.
Marcin
17 июль 2014, в 16:36
Поделиться
Нет. Не помещайте пробелы вокруг равных знаков при объявлении kwargs. Подумайте об этом так: если вы просто просматриваете строки кода, вы хотите тренировать свои глаза, чтобы увидеть разницу между оператором присваивания, используемым во время обычного потока программы (спам = True) и kwarg, особенно если он на собственной линии (спам = True).
Что касается конечной запятой, я всегда чувствовал, что конечная запятая предлагает коллеге или читателю, что я чувствую, что список, dict, множество аргументов и т.д. Могут быть подвержены расширению в будущем. Если я достаточно уверен, что структура представляет его зрелое состояние, я удаляю его.
jMyles
17 июль 2014, в 15:41
Поделиться
Ещё вопросы
- 0Разделить QString на — (тире) символ, доступ к элементу списка
- 0IE8: странная граница вокруг HTML-элемента кнопки
- 1Невозможно загрузить библиотеку native-hadoop для вашей платформы … с использованием встроенных классов java, где это применимо
- 0Включение еще одного объединения в таблицу MYSQL
- 1Группировка результатов Solr в Solr 3.6.1 API вызывает исключение NullPointerException при разборе результата
- 0клиент c ++ с сервером мониторинга php
- 0Как запретить просмотр кода сайта
- 0fullcalendar установить цвет отброшенного div
- 0Синтаксически неправильно использовать html-конвертер в jsView следующим образом: data-link = «html {: property}» вместо data-link = «{html: property}»?
- 1Как отдельный класс GUI будет взаимодействовать с классами логики?
- 0объединить с двумя столбцами и получить значения полей из их внешнего ключа с помощью одного запроса SQL
- 1Событие инициализации страницы framework7 не срабатывает
- 1Как перечислить git коммиты для релиза Android?
- 1Обнаружение исключений в родительском классе
- 1Взаимодействие — вызывать ли родной из управляемых или наоборот
- 0Выставленный литерал объекта службы Angular не обновляется?
- 1Точность застряла на 50% керас
- 0JQuery if заявление, основанное на ширине
- 1Числовой эквивалент if / elif / else, который сохраняет последнее значение, если условие не выполняется
- 0Мой первый столбец кода в простой консольной программе (c ++) заканчивается как мой последний столбец
- 1Изменить шаблон панели приложения и селектора длинных списков из Viewmodel
- 1Программа Android для отправки сообщений
- 0С ++ Шаблонный Функтор
- 1Промывка в репозиториях
- 1Хранимая процедура CLR возвращает SqlDataReader, но тип метода void
- 0Laravel 5 Internal Server Error 500 и TokenMismatchException для обновления базы данных с помощью AngularsJS
- 0JQuery Удалить массив из массива массивов
- 1javafx, реализующий и показывающий ListView
- 1Как извлечь конкретное число в строку, окруженную цифрами и текстом C #
- 0Выровняйте меню вправо, если lithth child равен 1 или 2
- 0symfony2 рендеринг формы как тип формы
- 1регистрация пользователя
- 0Пожалуйста, подождите, пока панель загрузки при нажатии кнопки не отображается
- 1Широковещательное сообщение на Java
- 1Мониторинг файлов WMI с использованием C #
- 0Найти первый элемент с классом, использовать класс, чтобы добавить элемент заголовка
- 1Сгруппируйте столбец, если ни одна из строк не является уникальной, используя панд
- 1Преобразовать исключение HttpException в ответ HTTP 404 (страница не найдена)
- 1Укажите язык в Octokit.net для Gist
- 1Умножение на Python ijk, почему мы используем следующую запись присваивания или строку кода?
- 0.hasOwnProperty … и значение?
- 0Могу ли я использовать функцию eval в этом случае?
- 1Создание плавающего, редактируемого и прокручиваемого списка в Android
- 1отсортировать массив с элементом, ближайшим к двум в середине и другими крайностями на другой стороне — js
- 1Тренировочный набор для распознавания лиц
- 1Воспроизведение SoftKeyboard на Android
- 0Перегрузка перегруженного метода: есть ли упрощение?
- 0Как удалить содержимое div?
- 1Это правильная конфигурация Kafka Consumer — при этой настройке Kafka?
- 0Html5 полноэкранный браузер Toggle Button
palachevskiy 0 / 0 / 0 Регистрация: 15.05.2020 Сообщений: 9 |
||||
1 |
||||
15.05.2020, 16:57. Показов 7149. Ответов 4 Метки нет (Все метки)
./solution.py:3:12: E203 whitespace before ‘:’
__________________
0 |
5403 / 3827 / 1214 Регистрация: 28.10.2013 Сообщений: 9,554 Записей в блоге: 1 |
|
15.05.2020, 17:05 |
2 |
отфармотировать по стандарту PEP8 Может, сначала сдашь русский? И еще: ты видел, что люди выкладывают сюда код в тегах Python кода, а не тупой нечитабельной лапшой?
1 |
Просто Лис 4830 / 3152 / 991 Регистрация: 17.05.2012 Сообщений: 9,186 Записей в блоге: 9 |
|
15.05.2020, 17:28 |
3 |
PyCharm -> ctrl+L
0 |
unfindable_404 683 / 466 / 204 Регистрация: 22.03.2020 Сообщений: 1,051 |
||||
15.05.2020, 17:54 |
4 |
|||
Дело не в PEP8. Код, который вы запускаете, поддерживается только Python3.8. Но вы запускаете его на Python более старой версии. Отсюда и ошибки. Я поправил.
2 |
Нарушитель 14040 / 8228 / 2485 Регистрация: 21.10.2017 Сообщений: 19,708 |
|
16.05.2020, 18:38 |
5 |
PyCharm -> ctrl+L Ctrl+Alt+L
2 |