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

В Python 3 есть два специальных параметра - *args и **kwargs, которые позволяют передавать переменное количество аргументов в функции. Эти параметры особенно полезны, когда вы не знаете заранее, сколько аргументов будет передано в функцию или если у вас есть необязательные аргументы, которые могут отсутствовать в вызове функции. Давайте рассмотрим каждый из них более подробно и рассмотрим примеры кода.

*args:

Параметр *args позволяет передавать произвольное количество позиционных аргументов в функцию. Для объявления *args в определении функции используется звездочка перед именем параметра. Когда функция вызывается, все переданные аргументы будут собраны в кортеж.

Пример кода:

def sum_numbers(*args):
    result = 0
    for num in args:
        result += num
    return result

print(sum_numbers(1, 2, 3))  # Вывод: 6
print(sum_numbers(10, 20, 30, 40))  # Вывод: 100

В этом примере мы определили функцию sum_numbers, принимающую переменное количество аргументов через *args. Затем мы прошлись по каждому аргументу в цикле и сложили их значения. В результате мы получаем сумму всех чисел, переданных в функцию.

**kwargs:

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

Пример кода:

def print_person_info(**kwargs):
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_person_info(name="John", age=30, city="New York")
# Вывод:
# name: John
# age: 30
# city: New York

В этом примере мы определили функцию print_person_info, принимающую произвольное количество именованных аргументов через **kwargs. Затем мы прошлись по каждому элементу словаря и вывели его ключ и значение.

Комбинирование *args и **kwargs:

Вы также можете использовать и *args, и **kwargs в одной функции, чтобы иметь возможность передавать и позиционные, и именованные аргументы.

Пример кода:

def print_info(*args, **kwargs):
    for arg in args:
        print(arg)
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(1, 2, 3, name="John", age=30)
# Вывод:
# 1
# 2
# 3
# name: John
# age: 30

В данном примере функция print_info может принимать и позиционные аргументы через *args, и именованные аргументы через **kwargs. Мы вывели все позиционные аргументы и затем вывели все элементы словаря.

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

Похожие вопросы на: "args kwargs python 3 "

504 Gateway Time Out - как её решить?
Преобразование строки в GoLang: string to string
Java StringBuilder: создание и управление строками
CPython - официальная реализация Python
Код ошибки 400: причины, последствия и способы исправления
Как установить pip: пошаговая инструкция
Математические функции: модуль числа (Math.abs)
Мессенджер DingTalk: эффективное сотрудничество в команде
Функция map - простой способ преобразования элементов в JavaScript
SQL TRUNCATE TABLE: простой способ удалить все записи из таблицы