← Назад к вопросам

На какие виды подразделяются аргументы передаваемые в функцию?

1.3 Junior🔥 111 комментариев
#Python Core

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Виды аргументов при передаче в функцию

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

1. Позиционные аргументы

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

def greet(name, age):
    print(f"{name} имеет возраст {age}")

greet("Иван", 30)  # name="Иван", age=30
greet(30, "Иван")  # НЕПРАВИЛЬНО: name=30, age="Иван"

2. Именованные аргументы (keyword arguments)

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

def greet(name, age):
    print(f"{name} имеет возраст {age}")

greet(age=30, name="Иван")  # Порядок не важен
greet(name="Мария", age=25)

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

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

def greet(name, age=18, city="Москва"):
    print(f"{name}, {age} лет, из города {city}")

greet("Иван")  # age=18, city="Москва"
greet("Мария", 25)  # age=25, city="Москва"
greet("Петр", city="СПб")  # age=18, city="СПб"

4. *args (переменное количество позиционных аргументов)

Позволяет функции принимать произвольное количество позиционных аргументов. Они упаковываются в кортеж.

def sum_numbers(*args):
    print(f"Получены аргументы: {args}")  # Кортеж
    return sum(args)

sum_numbers(1, 2, 3)  # args=(1, 2, 3)
sum_numbers(1, 2, 3, 4, 5)  # args=(1, 2, 3, 4, 5)

5. **kwargs (переменное количество именованных аргументов)

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

def print_info(**kwargs):
    print(f"Получены параметры: {kwargs}")  # Словарь
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Иван", age=30, city="Москва")
# Получены параметры: {"name": "Иван", "age": 30, "city": "Москва"}

6. Комбинация всех типов

Вы можете комбинировать все виды аргументов, но порядок СТРОГО фиксирован:

def complex_function(name, age, *args, city="Москва", **kwargs):
    print(f"name: {name}")
    print(f"age: {age}")
    print(f"args: {args}")
    print(f"city: {city}")
    print(f"kwargs: {kwargs}")

complex_function(
    "Иван", 30, "python", "javascript",
    city="СПб", hobby="coding", sport="tennis"
)

Вывод:

name: Иван
age: 30
args: ("python", "javascript")
city: СПб
kwargs: {"hobby": "coding", "sport": "tennis"}

7. Распаковка аргументов

Вы можете распаковывать списки и словари при вызове функции:

def greet(name, age, city):
    print(f"{name}, {age} лет, из города {city}")

data = ["Иван", 30, "Москва"]
greet(*data)  # Распаковка списка

data_dict = {"name": "Мария", "age": 25, "city": "СПб"}
greet(**data_dict)  # Распаковка словаря

Ключевые моменты

  • Позиционные аргументы передаются по порядку
  • Именованные аргументы повышают читаемость
  • Дефолтные значения делают параметры опциональными
  • *args принимает любое количество позиционных аргументов
  • **kwargs принимает любое количество именованных аргументов
  • Распаковка (* и **) упрощает передачу данных из коллекций

Способность правильно работать с разными видами аргументов — это основа для написания гибких и переиспользуемых функций в Python.