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

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

Освоение аргументов функций в Python

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

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

Аргументы

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

def greet(name, msg):
    """Эта функция приветствует человека с предоставленным сообщением."""
    print("Hello", name + ", " + msg)

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

Вывод

Hello Monica, Good morning!

Функция greet() принимает два параметра. Вызов с правильным количеством аргументов проходит гладко; в противном случае интерпретатор выдает TypeError с понятным сообщением.

>> greet("Monica")  # только один аргумент
TypeError: greet() missing 1 required positional argument: 'msg'
>> greet()  # без аргументов
TypeError: greet() missing 2 required positional arguments: 'name' and 'msg'

Аргументы переменной длины

Python предлагает гибкие способы принятия переменного числа аргументов. Ниже рассмотрены три распространенных паттерна.

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

Параметрам можно задавать значения по умолчанию с помощью оператора присваивания (=). Следующий пример демонстрирует, как опциональное сообщение по умолчанию устанавливается в «Good morning!»:

def greet(name, msg="Good morning!"):
    """
    Эта функция приветствует человека с предоставленным сообщением.
    Если сообщение не предоставлено, оно по умолчанию равно "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 — опционален. Когда присутствует аргумент по умолчанию, все последующие параметры также должны иметь значения по умолчанию; иначе возникнет SyntaxError.

def greet(msg = "Good morning!", name): pass
SyntaxError: non-default argument follows default argument

Именованные аргументы в Python

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

# 2 именованных аргумента
greet(name="Bruce", msg="How do you do?")
# 2 именованных аргумента (в другом порядке)
greet(msg="How do you do?", name="Bruce")
# 1 позиционный, 1 именованный аргумент
greet("Bruce", msg="How do you do?")

Смешивание позиционных и именованных аргументов допустимо только тогда, когда все позиционные аргументы предшествуют именованным; в противном случае возникнет SyntaxError.

greet(name="Bruce", "How do you do?")
SyntaxError: non-keyword arg after keyword arg

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

Когда число аргументов неизвестно на этапе проектирования, используйте звездочку (*) для их сбора в кортеж:

def greet(*names):
    """Приветствует каждое имя в переданном кортеже."""
    for name in names:
        print("Hello", name)

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

Вывод

Hello Monica
Hello Luke
Hello Steve
Hello John

Внутри функции names — это кортеж, содержащий все переданные аргументы, который затем можно перебирать или обрабатывать по необходимости.

Python

  1. Освоение типов данных в Python: практическое руководство
  2. Мастерство операторов Python: Полное руководство
  3. Оператор pass в Python: практическое руководство
  4. Lambda-функции в Python: практическое руководство по анонимным функциям
  5. Словари в Python: создание, манипуляции и продвинутые техники
  6. Генераторы в Python: эффективная итерация и продвинутые сценарии
  7. Замыкания в Python: как вложенные функции захватывают переменные
  8. Декораторы в Python: улучшайте функции экспертными техниками
  9. Мастерство метода strip() в Python: подробное руководство и практические примеры
  10. Освоение лямбда-функций Python: практические примеры и лучшие практики