Get started learning Python with DataCamp's free Intro to Python tutorial. Learn Data Science by completing interactive coding challenges and watching videos by expert instructors. Start Now!

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join 11 million other learners and get started learning Python for data science today!

Good news! You can save 25% off your Datacamp annual subscription with the code LEARNPYTHON23ALE25 - Click here to redeem your discount

Множественные Аргументы Функции


Every function in 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".

Exercise

Заполните функции 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!")

This site is generously supported by DataCamp. DataCamp offers online interactive Python Tutorials for Data Science. Join over a million other learners and get started learning Python for data science today!

Previous Tutorial Next Tutorial Take the Test
Copyright © learnpython.org. Read our Terms of Use and Privacy Policy