Аргументы по умолчанию в функциях Python

Функции в Python используются для реализации логики, которую вы хотите многократно выполнять в разных местах вашего кода. Вы можете передавать данные в эти функции через аргументы функции. Помимо передачи аргументов функциям через вызов функции, вы также можете установить значения аргументов по умолчанию в функциях Python. Эти значения по умолчанию назначаются аргументам функции, если вы явно не передаете значение параметра данному аргументу. Параметры - это значения, фактически передаваемые аргументам функции.

Функции в 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 
Licensed under CC BY-NC-SA 4.0
comments powered by Disqus