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

В чем разница между параметром и аргументом функции?

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

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

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

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

Разница между параметром и аргументом

Это часто путаемые термины, но они обозначают разные вещи в контексте функций. Эта разница критична при изучении Python.

Определение

Параметр — это переменная, определённая при объявлении функции. Это часть определения функции.

Аргумент — это конкретное значение, которое передаётся функции при её вызове. Это часть вызова функции.

Наглядный пример

# Определение функции - здесь используются ПАРАМЕТРЫ
def greet(name, greeting="Hello"):
    #      ^^^^  ^^^^^^^^^ - это параметры
    print(f"{greeting}, {name}!")

# Вызов функции - здесь используются АРГУМЕНТЫ
greet("Alice", "Hi")
#     ^^^^^^^ ^^^^ - это аргументы

greet("Bob")  # Для greeting используется значение по умолчанию

В примере выше:

  • Параметры: name и greeting
  • Аргументы: "Alice" и "Hi" (в первом вызове), "Bob" (во втором вызове)

Простое правило

Параметры = определение
Аргументы = использование

Аналогия: в определении рецепта (параметры) написано "добавь 2 стакана муки", а при готовке конкретного пирога (аргументы) вы берёте именно эти 2 стакана.

Типы аргументов

1. Позиционные аргументы — передаются в порядке параметров:

def subtract(a, b):
    return a - b

result = subtract(10, 3)  # 10 и 3 - позиционные аргументы
print(result)  # 7

2. Именованные (keyword) аргументы — передаются с указанием имени параметра:

def describe_person(name, age, city):
    print(f"{name}, {age} лет, живет в {city}")

# Именованные аргументы
describe_person(age=25, name="Bob", city="Moscow")
# Порядок не важен!

3. Аргументы по умолчанию — параметры со значениями по умолчанию:

def create_user(name, role="user", active=True):
    #              ^^^^  ^^^^^^^^^^^^  ^^^^^^^^^^^ - параметры со значениями по умолчанию
    return {"name": name, "role": role, "active": active}

user1 = create_user("Alice")  # role и active используют значения по умолчанию
user2 = create_user("Bob", "admin", False)  # Все позиционные аргументы
user3 = create_user("Charlie", active=False)  # Смешаны позиционные и именованные

Варианты функций с *args и **kwargs

Эти конструкции позволяют принимать переменное количество аргументов:

def sum_numbers(*args):
    # *args - параметр для переменного числа позиционных аргументов
    return sum(args)

result = sum_numbers(1, 2, 3, 4, 5)  # 1,2,3,4,5 - аргументы
print(result)  # 15

def print_info(**kwargs):
    # **kwargs - параметр для переменного числа именованных аргументов
    for key, value in kwargs.items():
        print(f"{key}: {value}")

print_info(name="Alice", age=30, city="NYC")  
# name="Alice", age=30, city="NYC" - аргументы (key=value)

Практическое значение в коде

# Функция для создания объектов с гибкими параметрами
class DataProcessor:
    def process(self, data, mode="fast", verbose=False, **options):
        # Параметры: data, mode, verbose, options (через **kwargs)
        print(f"Обработка в режиме {mode}")
        if verbose:
            print(f"Доп. опции: {options}")
        return data

# Вызов с разными аргументами
processor = DataProcessor()
processor.process([1, 2, 3])  # Простой вызов
processor.process([1, 2, 3], mode="slow", verbose=True, threads=4, timeout=30)
# Здесь threads=4 и timeout=30 попадают в **options

Таблица сравнения

АспектПараметрАргумент
Что этоПеременная в определенииЗначение при вызове
Где используетсяВ сигнатуре функцииПри вызове функции
Примерdef func(x, y):func(10, 20)
СвязьОдин параметрМожет быть много аргументов

Итоговый совет

Запомни простую схему:

  • Пишешь функцию → называешь параметры
  • Вызываешь функцию → передаёшь аргументы

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