Как работают функции в Python?
Функция - это блок кода, который выполняется только тогда, когда его вызывают. В функцию можно передавать данные, называемые параметрами. Функция может возвращать данные в качестве результата.
Создание функции
В Python функция определяется с помощью ключевого слова def:
def my_function():
print("Hello from a function")
Вызов функции
Чтобы вызвать функцию, используйте имя функции, за которым следуют круглые скобки:
def my_function():
print("Hello from a function")
my_function()
Для школьников и студентов был создан портал Udarenie.org где вы можете узнать куда падает ударение в разных словах русского языка. Чтение слов используя правильное ударение свидетельствуют об отличных знаниях русского языка.
Аргументы
Информация может быть передана в функции в качестве аргументов. Аргументы указываются после имени функции, внутри круглых скобок. Вы можете добавить столько аргументов, сколько хотите, просто разделяйте их запятой. В следующем примере есть функция с одним аргументом (fname). При вызове функции мы передаем имя, которое используется внутри функции для вывода полного имени:
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
Параметры или аргументы?
Термины параметр и аргумент могут использоваться для обозначения одного и того же: информации, передаваемой в функцию.
С точки зрения функции:
- Параметр - это переменная, указанная в круглых скобках в определении функции.
- Аргумент - это значение, которое передается в функцию при ее вызове.
Количество аргументов
По умолчанию функция должна вызываться с правильным количеством аргументов. Это означает, что если ваша функция ожидает 2 аргумента, вы должны вызвать функцию с 2 аргументами, не больше и не меньше.
Эта функция ожидает 2 аргумента и получает 2 аргумента:
def my_function(fname, lname):
print(fname + " " + lname)
my_function("Emil", "Refsnes")
Если вы попытаетесь вызвать функцию с 1 или 3 аргументами, вы получите ошибку.
Произвольные аргументы, *args
Если вы не знаете, сколько аргументов будет передано в вашу функцию, добавьте * перед именем параметра в определении функции. Таким образом, функция получит кортеж аргументов и сможет обращаться к ним соответствующим образом:
def my_function(*kids):
print("The youngest child is " + kids[2])
my_function("Emil", "Tobias", "Linus")
Аргументы по ключевым словам
Вы также можете передавать аргументы с помощью синтаксиса "ключ = значение". В этом случае порядок аргументов не имеет значения.
def my_function(child3, child2, child1):
print("The youngest child is " + child3)
my_function(child1 = "Emil", child2 = "Tobias", child3 = "Linus")
В документации по Python фраза Keyword Arguments часто сокращается до kwargs.
Произвольные аргументы ключевых слов, **kwargs
Если вы не знаете, сколько аргументов ключевых слов будет передано в вашу функцию, добавьте две звездочки: ** перед именем параметра в определении функции. Таким образом, функция получит словарь аргументов и сможет обращаться к ним соответствующим образом:
def my_function(**kid):
print("His last name is " + kid["lname"])
my_function(fname = "Tobias", lname = "Refsnes")
Значение параметра по умолчанию
В следующем примере показано, как использовать значение параметра по умолчанию. Если мы вызываем функцию без аргумента, она использует значение по умолчанию:
def my_function(country = "Norway"):
print("I am from " + country)
my_function("Sweden")
my_function("India")
my_function()
my_function("Brazil")
Передача списка в качестве аргумента
Вы можете передать в функцию аргумент любого типа данных (строка, число, список, словарь и т.д.), и он будет рассматриваться как тот же тип данных внутри функции. Например, если в качестве аргумента вы передадите List, то по достижении функции он все равно будет List:
def my_function(food):
for x in food:
print(x)
fruits = ["apple", "banana", "cherry"]
my_function(fruits)
Возвращаемые значения
Чтобы функция вернула значение, используйте оператор return:
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(5))
print(my_function(9))
Рекурсия
Python также допускает рекурсию функций, что означает, что определенная функция может вызывать сама себя. Рекурсия - это распространенная концепция математики и программирования. Она означает, что функция вызывает сама себя. Это означает, что вы можете циклически перебирать данные, чтобы достичь результата.
Разработчику следует быть очень осторожным с рекурсией, поскольку можно легко поскользнуться и написать функцию, которая никогда не завершается, или функцию, которая использует избыточное количество памяти или процессорной мощности. Однако при правильном написании рекурсия может быть очень эффективным и математически изящным подходом к программированию.
В этом примере tri_recursion() - это функция, которую мы определили для вызова самой себя ("recurse"). В качестве данных мы используем переменную k, которая уменьшается (-1) каждый раз, когда мы выполняем рекурсию. Рекурсия заканчивается, когда условие не больше 0 (т.е. когда оно равно 0).
Начинающему разработчику может потребоваться некоторое время, чтобы понять, как именно это работает, лучший способ узнать это - протестировать и модифицировать.
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("\n\nRecursion Example Results")
tri_recursion(6)