Любая причина НЕ всегда использовать ключевые аргументы? - PullRequest
57 голосов
/ 12 августа 2011

Прежде чем перейти к питону, я начал с некоторых книг по Objective-C / Cocoa. Насколько я помню, большинству функций требовалось явно указывать аргументы ключевых слов. До недавнего времени я забыл все об этом и просто использовал позиционные аргументы в Python. Но в последнее время я столкнулся с несколькими ошибками, возникшими из-за неправильных позиций - хитрыми мелочами, которыми они были.

Заставил меня задуматься - вообще говоря, если только нет обстоятельства, которое конкретно требует аргументов без ключевых слов - есть ли веская причина НЕ использовать аргументы с ключевыми словами? Считается ли плохим стилем всегда использовать их, даже для простых функций?

Мне кажется, что большинство моих 50-строчных программ регулярно масштабировались до 500 или более строк, если я просто привыкну всегда использовать аргументы ключевых слов, код будет более легко читаемым и обслуживаемым по мере роста. По какой причине это может быть не так?

UPDATE:

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

Ответы [ 11 ]

1 голос
/ 04 мая 2018

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

testing(arg = 20, 56)

выдает сообщение SyntaxError;что-то вроде:

SyntaxError: non-keyword arg after keyword arg

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

...