Введение в Python

Как передать бесконечное количество аргументов в функцию в Python? Что за многофункциональные аргументы?

Как передать бесконечное количество аргументов в функцию в Python? Что за многофункциональные аргументы?
В: Введение в Python

Каждая функция в Python получает заранее определенное количество аргументов, если они объявлены нормальным образом, например так:

def myfunction(first, second, third):
    # do something with the 3 variables
    ...

Можно объявить функции, которые получают переменное число аргументов, используя следующий синтаксис:

def foo(first, second, third, *therest):
    print("First: %s" % first)
    print("Second: %s" % second)
    print("Third: %s" % third)
    print("And all the rest... %s" % list(therest))

Переменная "therest" - это список переменных, который получает все аргументы, которые были переданы функции "foo" после первых 3 аргументов. Поэтому вызов foo(1,2,3,4,5) выведет:

def foo(first, second, third, *therest):
    print("First: %s" %(first))
    print("Second: %s" %(second))
    print("Third: %s" %(third))
    print("And all the rest... %s" %(list(therest)))

foo(1,2,3,4,5)

Также возможно посылать аргументы функций по ключевым словам таким образом, что порядок аргументов не будет иметь значения, используя следующий синтаксис. Следующий код дает такой результат: The sum is: 6 Result: 1

def bar(first, second, third, **options):
    if options.get("action") == "sum":
        print("The sum is: %d" %(first + second + third))

    if options.get("number") == "first":
        return first

result = bar(1, 2, 3, action = "sum", number = "first")
print("Result: %d" %(result))

Функция "bar" получает 3 аргумента. Если получен дополнительный аргумент "action" и он дает инструкции по суммированию чисел, сумма выводится. Кроме того, функция также знает, что она должна вернуть первый аргумент, если значение параметра "number", переданное в функцию, равно "first".

Упражнение

Заполните функции foo иbar, чтобы они могли получать переменное количество аргументов (3 или более) Функция foo должна возвращать количество полученных дополнительных аргументов. "Bar" должен возвращать "True", если аргумент с ключевым словом "magicnumber" стоит 7, а в противном случае "False"

# edit the functions prototype and implementation def foo(a, b, c): pass def bar(a, b, c): pass # test code if foo(1,2,3,4) == 1: print("Good.") if foo(1,2,3,4,5) == 2: print("Better.") if bar(1,2,3,magicnumber = 6) == False: print("Great.") if bar(1,2,3,magicnumber = 7) == True: print("Awesome!") # edit the functions prototype and implementation def foo(a, b, c, *args): return len(args) def bar(a, b, c, **kwargs): return kwargs["magicnumber"] == 7 # test code if foo(1,2,3,4) == 1: print("Good.") if foo(1,2,3,4,5) == 2: print("Better.") if bar(1,2,3,magicnumber = 6) == False: print("Great.") if bar(1,2,3,magicnumber = 7) == True: print("Awesome!") test_output_contains("Good.") test_output_contains("Better.") test_output_contains("Great.") test_output_contains("Awesome!") success_msg("Great work!")
Еще от кодкамп
Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.