Когда я должен использовать varargs в разработке API Python?

AssemblyVersion в значительной степени остается внутренним к.NET, в то время как AssemblyFileVersion то, что видит Windows. Если Вы переходите к свойствам блока, находящегося в каталоге, и переключаетесь на вкладку версии, эти AssemblyFileVersion то, что Вы будете видеть вершину. При сортировке файлов по версии это - то, что используется Проводником.

AssemblyInformationalVersion карты к "Версии продукта" и предназначен, чтобы просто "использоваться человеком".

AssemblyVersion является, конечно, самым важным, но я не пропустил бы AssemblyFileVersion, также. Если Вы не обеспечиваете AssemblyInformationalVersion, компилятор добавляет его для Вас путем снятия изоляции с части "пересмотра" номера версии и отъезда major.minor.build.

6
задан cdleary 16 July 2009 в 10:20
поделиться

4 ответа

Рассмотрите возможность использования varargs, когда вы ожидаете, что ваши пользователи укажут список аргументов в виде кода на сайте вызова или если у вас будет одно значение, как правило. Если вы ожидаете, что ваши пользователи получат аргументы откуда-то еще, не используйте varargs. Если вы сомневаетесь, ошибитесь в том, чтобы не использовать varargs.

Используя ваши примеры, наиболее распространенный вариант использования os.path.join - это иметь префикс пути и добавлять имя файла / относительный путь к это, поэтому вызов обычно выглядит как os.path.join (prefix, some_file) . С другой стороны, any () обычно используется для обработки списка данных, когда вы знаете все элементы, которые не используете any ([a, b, c]) , используйте a, b или c .

8
ответ дан 9 December 2019 в 20:47
поделиться

Мое практическое правило - использовать его, когда вы часто можете переключаться между передачей одного и нескольких параметров. Вместо двух функций (например, кода графического интерфейса):

def enable_tab(tab_name)
def enable_tabs(tabs_list)

или еще хуже, имея только одну функцию

def enable_tabs(tabs_list)

и используя ее как enable_tabls (['tab1']) , я обычно использую просто: def enable_tabs (* tabs) . Хотя что-то вроде enable_tabs ('tab1') выглядит некорректно (из-за множественного числа), я предпочитаю его альтернативам.

4
ответ дан 9 December 2019 в 20:47
поделиться

Это совершенно разные интерфейсы.
В одном случае у вас есть один параметр, в другом - много.

any(1, 2, 3)
TypeError: any() takes exactly one argument (3 given)

os.path.join("1", "2", "3")
'1\\2\\3'

Это действительно зависит от , что вы хотите выделить: any работает со списком (ну, сортировка of), а os.path.join работает с набором строк.
Следовательно, в первом случае вы запрашиваете список; во втором вы запрашиваете строки напрямую.

Другими словами, выразительность интерфейса должна быть основным ориентиром для выбора способа передачи параметров.

0
ответ дан 9 December 2019 в 20:47
поделиться

Вы должны использовать его, когда ваш список параметров является переменным.

Да, я знаю, что ответ глупый, но это правда. Возможно, ваш вопрос был немного расплывчатым. : -)

Аргументы по умолчанию, такие как min () выше, более полезны, когда вы либо хотите другого поведения (например, min () выше), либо когда вы просто не хотите заставлять вызывающего абонента отправлять все параметры.

* arg используется, когда у вас есть переменный список аргументов одного и того же типа. Присоединение - типичный пример. Вы можете заменить его аргументом, который также принимает список.

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

0
ответ дан 9 December 2019 в 20:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: