Есть ли конкретное соглашение при передаче нескольких аргументов в функцию? - PullRequest
0 голосов
/ 12 января 2019

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

Что ниже более "Pythonic"?

A)

def function_main(arg1, arg2, arg3, arg4):
    innner_function(arg1, arg2, arg3, arg4)
    second_inner_function(arg1, arg2, arg3, arg4)

В)

def function_main(arg1, arg2, arg3, arg4):
    arg_list = [arg1, arg2, arg3, arg4]
    innner_function(arg_list)
    second_inner_function(arg_list)

Вторая кажется более СУХОЙ, но я не уверен, слишком ли СУХОЙ, если есть такая вещь. Что будет считаться лучшим в использовании?

1 Ответ

0 голосов
/ 12 января 2019

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

В соответствии с вопросом, давайте немного уменьшим изображение для более широкого обзора. Рассмотрим некоторые аспекты (помните о методах ООП):

& Бык; Основной метод (или определение в Python) в основном существует для структурных целей и удобочитаемости.

& Бык; однако массив идентичных примитивов, скорее всего, не следует передавать как отдельные элементы:

& Бык; если вам нужны эти значения отдельно, сохраняйте их для вложенных функций
& Бык; если нет, присвойте их перед a переменной, объекту, даже перечислениям или константам (будьте осторожны, подумайте о дизайне)
& Бык; если ваши элементы - это разные типы данных довольно несвязанного контента, держите их отдельно.
& Бык; если они разные, но должны быть сохранены вместе по контексту, подумайте о создании класса и работе с объектом.
& Бык; если ваши элементы являются подмножеством большего хранения данных, подумайте об использовании соответствующих структур данных, таких как XML, JSON или даже база данных, и спроектируйте в соответствующем OO

& Бык; (всегда есть что-то, чего вам не хватает в дизайне, привыкните к нему, никогда не переставайте задумываться)

Мое предложение было бы просто продолжать практиковать. Этот вопрос существует только на начальном уровне и быстро исчезнет с ростом опыта проектирования.

...