Вопрос:

может ли Python иметь переменные аргументы в функциях

python-3.x function

7 просмотра

1 ответ

168 Репутация автора

Я пытаюсь написать что-то вроде этого

def add(x, y, flag=None):

    if flag=None:
    return x+y
    elif flag=True:
        return x+y+z
print(add(1, 2))
print(add(1, 2, 3))

если flag = True, то в функции z должен быть третий параметр, который необходимо добавить и использовать результат. Поэтому я пытаюсь понять, возможно ли это в Python, например, принимая третий аргумент, что-то похожее на перегрузку операторов в C # и т. Д.

Автор: ss321c Источник Размещён: 11.08.2019 08:52

Ответы (1)


0 плюса

13589 Репутация автора

Нет смысла перегружать в Python. Есть два способа сделать ваш конкретный пример:

def add(x,y,z=None): 
    if z is not None: return x+y+z
    return x+y

Нам не нужен флаг, мы просто устанавливаем значение по умолчанию для нашего 3d-аргумента на то, что говорит, что мы не будем его использовать (т. Е. Аргумент - это флаг). Второй более динамичный вариант будет:

def add(*variableNumberOfArguments):
    return sum(variableNumberOfArguments)

*Оператор в определении функции означает любой параметр ключевого слова (что у нас нет ни одного здесь) после того, как все названные аргументы принимаются ( у нас нет ни одного здесь) группируются в список, здесь называется variableNumberOfArguments. Это будет работать, конечно, для более чем 3 параметров. При необходимости вы можете проверить длину списка, как и любой список.

Автор: kabanus Размещён: 11.08.2019 08:57
Вопросы из категории :
32x32