Должен ли я добавить конечную запятую после последнего аргумента в вызове функции?

Что лучше делать?

self.call(1, True, "hi") 

или

 self.call(1, True, "hi",) 

И что в следующих случаях:

 self.call( 1, True, "hi" ) 

или

 self.call( 1, True, "hi", ) 

?

Причины добавления конечной запятой в структуры данных мне знакомы, но как насчет вызовов функций?

  • Как вы получаете Python для записи кода функции, имеющейся в памяти?
  • Итератор Python пуст после выполнения некоторых действий на нем
  • Дублируйте экземпляр модели Django и все внешние ключи, указывающие на это.
  • apscheduler в Flask выполняется дважды
  • Разница между переменными_scope и name_scope в TensorFlow
  • Как передать дополнительные аргументы в python decorator?
  • Как совместить точные «множественные» строки в Python
  • Пример python для telnetlib
  • 3 Solutions collect form web for “Должен ли я добавить конечную запятую после последнего аргумента в вызове функции?”

    Я думаю, что нет никаких технических причин избегать запятых в вызовах функций, но некоторые люди, вероятно, находят их отвлекающими. Некоторые могут остановиться и сказать: «Хм, интересно, действительно ли это должно быть там?»

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

    Например, такая функция:

     def my_fun(a, b, c=None): ... 

    … называется так:

     my_fun( a='abc', b=123 ) 

    … затем изменилось на это:

     my_fun( a='abc', b=123, c='def' ) 

    производит этот diff в git:

     $ git diff ... my_fun( a='abc', - b=123 + b=123, + c='def' ) 

    В то время как,

     my_fun( a='abc', b=123, ) 

    изменился на…

     my_fun( a='abc', b=123, c='def', ) 

    производит этот diff в git:

     $ git diff ... my_fun( a='abc', b=123, + c='def', ) 

    В структурах данных конечная запятая «полезна» для упрощения добавления элементов:

     a = [ 1, 2, 3, ] 

    легче изменить

     a = [ 1, 2, 3, 4, 5, ] 

    потому что вам не нужно редактировать строку, которая говорит 3, ,.

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

    Я думаю, в этом вопросе такие же причины применяются, как и для списков и кортежей, потому что список аргументов функции именно таков.

    Вот цитата из часто задаваемых вопросов о дизайнерских решениях, которые были сделаны для языка ( cf ):

    Почему Python разрешает запятые в конце списков и кортежей?

    Python позволяет добавлять конечную запятую в конце списков, кортежей и словарей:

     [1, 2, 3,] ('a', 'b', 'c',) d = { "A": [1, 5], "B": [6, 7], # last trailing comma is optional but good style } 

    Этому есть несколько причин.

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

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

     x = [ "fee", "fie" "foo", "fum" ] 

    Этот список выглядит как четыре элемента, но на самом деле он содержит три: «гонорар», «fiefoo» и «fum». Всегда добавление запятой позволяет избежать этого источника ошибок.

    Предоставление конечной запятой может также облегчить создание программного кода.

    Python - лучший язык программирования в мире.