Документация по Python. Теоретические материалы, и практические задачи

Аргументы функции Python

Передача аргументов в функции Python

На прошлой статье, мы разобрались с тем, как определять функции в python. Сейчас мы разберемся, что такое аргументы, и как их передавать. Перейдем сразу к примере, и разберемся со всеми вопросами шаг за шагом.


def func (name,message):

"""

Эта функция принимает две переменные

name и message

"""

    print("Привет", name + ', ' + message)

func("Тимур","Доброе утро")

Результат:

Привет Тимур, Доброе утро

В примере выше, мы видим что функция func(), имеет два параметра. Мы вызвали эту функцию, с двумя аргументами, соответственно, у нас нет никаких проблем. Если мы попробуем вызвать функцию с другим количеством аргументов, Pycharm , выдаст нам сообщение об ошибке.

 
func("Тимур") # Только один аргумент 
TypeError: greet() missing 1 required positional argument: 'message' 

Значение аргумента по умолчанию

Аргумент может иметь значение по умолчанию. Задается это значение с помощью уже знакомого нам оператора присваивания.


def hello(name, message="Доброе утро"):

    print("Hello", name + ', '+message)

hello("Тимур")

hello("Мария", "Как дела?")

Результат:

Тимур, Доброе утро

Мария, Как дела?

В этой функции наш первый параметр, не имеет значения по умолчанию, поэтому он обязателен во время вызова. А второй параметр имеет значение по умолчанию, соответственно мы можем его не указывать при вызове функции.

Важно запомнить! Любое количество аргументов передаваемых в функцию, может иметь значение по умолчанию. Но, как только мы указали такой аргумент, все последующие аргументы так же должны иметь значение по умолчанию, в противном случае,мы получим синтаксическую ошибку.


def hello(message = "Доброе утро", name):
# Мы передали аргументы в неправильном порядке, поэтому получаем ошибку
SyntaxError: non-default argument follows default argument

Вызов аргументов по ключевым словам

При вызове функции с аргументами, значение этих аргументов присваиваются в соответствии с их позицией.

В примерах выше, при вызове функции hello(), значение «Тимур » присваивалось аргументу name, и так же значение «Доброе утро», присваивалось message.

В Python, можно вызывать функции с помощью ключевых слов. При таком вызове, порядок аргументов может быть другой.  Рассмотрим несколько примеров. Все примеры указанные ниже дают одинаковый результат.


hello (name ="Тимур", message ="Как дела?")

hello (message ="Как дела?", name ="Тимур")

hello ("Тимур", message ="Как дела?")

Как мы видим, мы без проблем можем позиционные аргументы с аргументами ключевых слов. Но, всегда помните что аргументы ключевых слов, идут за позиционными аргументами. В противном случае получим следующую ошибку:

 SyntaxError: non-keyword arg after keyword arg 

Произвольное количество аргументов

Иногда может произойти такое, что мы точно не знаем какое количество аргументов нам необходимо передать. Решается этот вопрос в Python, довольно просто.

При определении функции, мы используем специальный символ (*) пере названием аргумента. Рассмотрим пример.


def hello(*names)

""" Пример функции с передачей

неограниченного количества аргументов"""

    for i in names:

        print("Привет", i)

hello("Тимур","Павел","Настя","Василий","Женя")

Результат:

Привет Тимур

Привет Павел

Привет Настя

Привет Василий

Привет Женя

Я думаю, посмотрев код, вы без труда разобрались, что у нас там произошло. Но давайте все же по порядку. Мы изначально не знали какое количество аргументов нам нужно передать, поэтому использовали специальный символ (*). Далее мы вызываем нашу функцию hello(«Тимур»,»Павел»,»Настя»,»Василий»,»Женя»), куда передали нужное нам количество аргументов. В это время, внутри функции, наши переданные аргументы формируется в кортеж, а затем запускается цикл for, для последующего перебора, и извлечения переданных аргументов.

Рекурсия в Python

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *