← Назад к вопросам
В чем разница между параметрами и аргументами в Python?
1.3 Junior🔥 191 комментариев
#Python Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Разница между параметрами и аргументами
В Python параметры и аргументы — это два связанных, но разных понятия, которые часто путают. Важно понимать эту разницу для правильного использования функций.
Основные определения
Параметры — это переменные, определённые в сигнатуре функции (при объявлении). Аргументы — это реальные значения, которые передаются функции при вызове.
# Определение функции - параметры
def greet(name, age=18):
# name и age — это параметры
print(f"Hello, {name}! You are {age} years old")
# Вызов функции - аргументы
greet("Alice", 25) # "Alice" и 25 — это аргументы
greet("Bob") # "Bob" — аргумент, age использует значение по умолчанию
Типы параметров
Позиционные параметры — передаются в порядке определения:
def divide(numerator, denominator):
# numerator и denominator — позиционные параметры
return numerator / denominator
print(divide(10, 2)) # 10 → numerator, 2 → denominator
print(divide(2, 10)) # 2 → numerator, 10 → denominator (другой результат!)
Параметры с значениями по умолчанию:
def create_user(username, role="user", active=True):
# role и active имеют значения по умолчанию
return {"username": username, "role": role, "active": active}
create_user("alice") # Использует role="user", active=True
create_user("bob", "admin") # role переопределён
Типы аргументов
Позиционные аргументы — передаются по порядку:
print(divide(10, 2)) # Позиционные аргументы
Именованные аргументы — передаются с указанием имени параметра:
print(divide(denominator=2, numerator=10)) # Можно в любом порядке
print(divide(10, denominator=2)) # Смешивание позиционных и именованных
*args и **kwargs
Для гибкого количества аргументов используются специальные параметры:
def sum_numbers(*args):
# *args собирает позиционные аргументы в кортеж
return sum(args)
print(sum_numbers(1, 2, 3, 4, 5)) # args = (1, 2, 3, 4, 5)
def print_info(**kwargs):
# **kwargs собирает именованные аргументы в словарь
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="Alice", age=30, city="NYC")
# kwargs = {"name": "Alice", "age": 30, "city": "NYC"}
Полный пример с разными типами
def configure_app(host="localhost", port=8000, *services, **options):
# host, port — параметры со значениями по умолчанию
# *services — собирает позиционные аргументы в кортеж
# **options — собирает именованные аргументы в словарь
print(f"Server: {host}:{port}")
print(f"Services: {services}")
print(f"Options: {options}")
configure_app("0.0.0.0", 5000, "auth", "db", debug=True, log_level="DEBUG")
# host=0.0.0.0, port=5000
# services=("auth", "db")
# options={"debug": True, "log_level": "DEBUG"}
Практическое значение
Различие между параметрами и аргументами критично для:
- Проектирования функций — выбора правильных параметров
- Вызова функций — передачи правильных аргументов
- Отладки — понимания, почему функция ведёт себя не так
- Документации — объяснения, что ожидает функция