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
Множество Функционални Аргументи
Получаване на променлив брой аргументи във функции в Python
Всяка функция в Python получава предварително определен брой аргументи, ако е декларирана нормално, като например:
python
def myfunction(first, second, third):
# do something with the 3 variables
...
Възможно е да се декларират функции, които получават променлив брой аргументи, използвайки следния синтаксис:
python
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)
ще изведе:
```python 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
```python 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!