Принудительное именование параметров в Python - PullRequest
78 голосов
/ 03 июня 2010

В Python у вас может быть определение функции:

def info(object, spacing=10, collapse=1)

, который можно вызвать любым из следующих способов:

info(odbchelper)                    
info(odbchelper, 12)                
info(odbchelper, collapse=0)        
info(spacing=15, object=odbchelper)

благодаря тому, что Python допускает аргументы любого порядка, если они названы.

Проблема, с которой мы сталкиваемся, заключается в том, что по мере роста некоторых из наших больших функций люди могут добавлять параметры в диапазоне от spacing до collapse, что означает, что неправильные значения могут идти к параметрам, которые не названы. Кроме того, иногда не всегда понятно, что нужно делать. Мы ищем способ заставить людей называть определенные параметры - не просто стандарт кодирования, а в идеале плагин flag или pydev?

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

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

Ответы [ 11 ]

0 голосов
/ 03 июня 2010

Вы можете использовать оператор **:

def info(**kwargs):

таким образом, люди вынуждены использовать именованные параметры.

...