Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

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

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

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

Видео:Аргументы функций Python:позиции, ключевые слова и значения по умолчанию

Аргументы

В разделе, посвященном пользовательским функциям, мы узнали об определении функции и ее вызове. В противном случае вызов функции приведет к ошибке. Вот пример.

def greet(name, msg):
    """This function greets to
    the person with the provided message"""
    print("Hello", name + ', ' + msg)

greet("Monica", "Good morning!")

Вывод

Hello Monica, Good morning!

Здесь функция greet() имеет два параметра.

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

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

>>> greet("Monica")    # only one argument
TypeError: greet() missing 1 required positional argument: 'msg'
>>> greet()    # no arguments
TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'
<час>

Переменные аргументы функции

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

Ниже описаны три различные формы этого типа.

Аргументы Python по умолчанию

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

Мы можем указать значение по умолчанию для аргумента, используя оператор присваивания (=). Вот пример.

def greet(name, msg="Good morning!"):
    """
    This function greets to
    the person with the
    provided message.

    If the message is not provided,
    it defaults to "Good
    morning!"
    """

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


greet("Kate")
greet("Bruce", "How do you do?")

Вывод

Hello Kate, Good morning!
Hello Bruce, How do you do?

В этой функции параметр name не имеет значения по умолчанию и требуется (обязательно) во время вызова.

С другой стороны, параметр msg имеет значение по умолчанию "Good morning!" . Таким образом, это необязательно во время разговора. Если указано значение, оно перезапишет значение по умолчанию.

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

Это означает, что аргументы не по умолчанию не могут следовать за аргументами по умолчанию. Например, если бы мы определили заголовок функции выше как:

def greet(msg = "Good morning!", name):

Мы получили бы ошибку как:

SyntaxError: non-default argument follows default argument
<час>

Аргументы ключевого слова Python

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

Например, в приведенной выше функции greet() , когда мы назвали его как greet("Bruce", "How do you do?") , значение "Bruce" присваивается аргументу name и аналогично "How do you do?" в сообщение .

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

# 2 keyword arguments
greet(name = "Bruce",msg = "How do you do?")

# 2 keyword arguments (out of order)
greet(msg = "How do you do?",name = "Bruce") 

1 positional, 1 keyword argument
greet("Bruce", msg = "How do you do?")           

Как мы видим, мы можем смешивать позиционные аргументы с ключевыми словами во время вызова функции. Но мы должны помнить, что аргументы ключевого слова должны следовать за позиционными аргументами.

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

greet(name="Bruce","How do you do?")

Приведет к ошибке:

SyntaxError: non-keyword arg after keyword arg
<час>

Произвольные аргументы Python

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

В определении функции мы используем звездочку (*) перед именем параметра, чтобы обозначить этот тип аргумента. Вот пример.

def greet(*names):
    """This function greets all
    the person in the names tuple."""

    # names is a tuple with arguments
    for name in names:
        print("Hello", name)


greet("Monica", "Luke", "Steve", "John")

Вывод

Hello Monica
Hello Luke
Hello Steve
Hello John

Здесь мы вызвали функцию с несколькими аргументами. Эти аргументы упаковываются в кортеж перед передачей в функцию. Внутри функции мы используем for цикл для возврата всех аргументов.


Python

  1. Типы данных Python
  2. Операторы Python
  3. Оператор передачи Python
  4. Анонимная/лямбда-функция Python
  5. Словарь Питона
  6. Генераторы Python
  7. Замыкания Python
  8. Декораторы Python
  9. Функция Python String strip() с ПРИМЕРОМ
  10. Лямбда-функции Python с ПРИМЕРАМИ