Функции в Python используются для реализации логики, которую вы хотите многократно выполнять в разных местах вашего кода. Вы можете передавать данные в эти функции через аргументы функции. Помимо передачи аргументов функциям через вызов функции, вы также можете установить значения аргументов по умолчанию в функциях Python. Эти значения по умолчанию назначаются аргументам функции, если вы явно не передаете значение параметра данному аргументу. Параметры - это значения, фактически передаваемые аргументам функции.
В этой статье вы увидите, как использовать аргументы по умолчанию в функциях Python. Но сначала мы увидим, как определить функцию в Python и как явно передавать значения аргументам функции.
Функция без аргументов
Давайте определим очень простую функцию Python без аргументов:
def my_function():
print("This is a function without arguments")
Вышеупомянутый сценарий определяет функцию my_function
, которая не
принимает никаких аргументов и просто печатает строку.
В следующем сценарии показано, как на самом деле вызвать функцию
my_function()
my_function()
В выводе вы должны увидеть простой оператор, выводимый на экран функцией
my_function()
This is a function without arguments
Функция с явными аргументами
Теперь давайте определим простую функцию Python, в которую мы должны передать несколько значений для аргументов функции. Если вы не укажете значения для всех аргументов функции, вы увидите ошибку.
Вот функция, которую мы будем использовать в качестве примера:
def func_args(integer1, integer2):
result = integer1 + integer2
return result
В приведенном выше коде мы создаем функцию func_args()
с двумя
аргументами integer1
и integer2
. Функция складывает значения,
переданные в два аргумента, и возвращает результат вызывающей функции.
Попробуем вызвать указанную выше функцию с двумя аргументами:
result = func_args(10, 20)
print(result)
Приведенный выше сценарий вызывает метод func_args()
с двумя
значениями параметров, то есть 10 и 20. В выводе вы должны увидеть сумму
этих двух значений, то есть 30.
Теперь попробуем вызвать метод func_args()
без передачи значений
аргументов:
result = func_args()
print(result)
В выводе вы должны увидеть следующую ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-13-3449c8e5e188> in <module>
----> 1 result = func_args()
2 print(result)
TypeError: func_args() missing 2 required positional arguments: 'integer1' and 'integer2'
Ошибка очевидна: при вызове функции func_args()
отсутствуют 2
требуемых позиционных аргумента, integer1
и integer2
. Ошибка в
основном говорит нам, что нам нужно передать значения для integer1
и
integer2
через вызов функции.
Давайте теперь передадим значение одному из аргументов и посмотрим, что произойдет:
result = func_args(10)
print(result)
Теперь на выходе вы снова должны увидеть следующую ошибку:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-640ec7b786e1> in <module>
----> 1 result = func_args(10)
2 print(result)
TypeError: func_args() missing 1 required positional argument: 'integer2'
Разница здесь в том, что ошибка теперь сообщает нам, что значение для
одного из позиционных аргументов, то есть integer2
, отсутствует.
Это означает, что без установки каких-либо значений аргументов по
умолчанию вы должны явно передавать значения для всех аргументов
функции, в противном случае будет выдана ошибка.
Что, если вы хотите, чтобы ваша функция выполнялась со значениями аргументов в вызове функции или без них? Именно здесь в игру вступают аргументы по умолчанию в функциях Python.
Функция с аргументами по умолчанию
Аргументы по умолчанию в функциях Python - это те аргументы, которые принимают значения по умолчанию, если явные значения не передаются этим аргументам из вызова функции. Давайте определим функцию с одним аргументом по умолчанию.
def find_square(integer1=2):
result = integer1 * integer1
return result
Вышеупомянутый сценарий определяет функцию find_square()
с одним
аргументом по умолчанию, т.е. integer1
. Значение по умолчанию для
integer1
аргумента установлено значение 2. При вызове find_square()
метод со значением для integer1
аргумента find_square()
функция
возвращает квадрат этого значения.
В противном случае, если вы не передаете никакого значения для
integer1
аргумента find_square()
функции, вы увидите , что значение
по умолчанию, то есть 2, будет назначен integer1
, а функция
возвращает квадрат 2, т.е. 4.
Сначала вызовем метод find_square()
со значением аргумента 10:
result = find_square(10)
print(result)
Выход:
100
Когда вы выполняете приведенный выше сценарий, значение 10
перезаписывает значение по умолчанию 2 для аргумента integer1
функции
find_square()
а функция возвращает 100, что является квадратом 10.
Теперь мы вызовем find_square()
без какого-либо значения argument1
arguments1. В этом случае вы увидите, что 4 будет возвращено
find_square()
поскольку в отсутствие значения для функции
find_square()
значение по умолчанию 2 будет использоваться в качестве
значения для функции find_square()
, так как показано ниже:
result = find_square()
print(result)
Выход:
4
Функция Python также может иметь несколько аргументов по умолчанию. Например, в следующем сценарии функция добавляет число целых чисел, переданное в аргументы. Если в функцию не передается ни одно из целочисленных значений, аргументы по умолчанию будут принимать значения 2 и 4 соответственно, как показано ниже:
def add_ints(integer1=2, integer2=4):
result = integer1 + integer2
return result
Сначала add_ints()
без каких-либо параметров:
result = add_ints()
print(result)
Выход:
6
Поскольку мы не передали никаких значений для аргументов функции, значения аргументов по умолчанию, то есть 2 и 4, были добавлены вместе.
Давайте теперь передадим в add_ints()
два наших собственных значения:
result = add_ints(4, 8)
print(result)
Выход:
12
Как и ожидалось, 4 и 8 были добавлены вместе, чтобы получить 12.
Функция Python может одновременно иметь как обычные (явные) аргументы,
так и аргументы по умолчанию. Создадим функцию take_power()
. Первый
аргумент функции - это обычный аргумент, а второй аргумент - это
аргумент по умолчанию со значением 2. Функция возвращает результат
значения в первом аргументе, возведенного в степень значения второго
аргумента.
def take_power(integer1, integer2=2):
result = 1
for i in range(integer2):
result = result * integer1
return result
Давайте сначала передадим только один аргумент:
result = take_power(3)
print(result)
Выход:
9
В приведенных выше сценариях, 3 было принято в качестве значения к
integer1
аргументу take_power()
функции. Для аргумента по умолчанию
integer2
. Следовательно, значение по умолчанию 2 будет
использоваться, чтобы взять степень 3, и вы увидите 9 на выходе.
Давайте теперь передадим два значения функции take_power()
.
result = take_power(3, 4)
print(result)
На выходе вы увидите 3 в четвертой степени, то есть 81.
Важно отметить, что за параметрами с аргументами по умолчанию не могут следовать параметры без аргументов по умолчанию . Возьмем, к примеру, следующую функцию:
def take_power(integer1=2, integer2):
result = 1
for i in range(integer2):
result = result * integer1
return result
Попытка вызвать эту функцию приведет к ошибке, поскольку первый аргумент имеет значение по умолчанию, а второй - нет:
result = take_power(3, 4)
print(result)
Выполнение этого кода приводит к следующей ошибке:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-14-640ec7b786e1> in <module>
----> 1 def take_power(integer1=3, integer2):
2 result = 1
SyntaxError: non-default argument follows default argument