Параметры - это переменные, указанные в определении функции. Аргументы - это значения, которые передаются в функцию при её вызове.
def моя_функция(параметр1, параметр2): # параметры
print(параметр1, параметр2)
моя_функция("аргумент1", "аргумент2") # аргументы
Позиционные аргументы передаются в том же порядке, в котором определены параметры функции.
def информация_о_человеке(имя, возраст, город):
print(f"Имя: {имя}, Возраст: {возраст}, Город: {город}")
# Порядок важен!
информация_о_человеке("Анна", 25, "Москва")
информация_о_человеке("Москва", "Анна", 25) # Неправильный порядок
Именованные аргументы позволяют передавать значения, указывая имя параметра.
def информация_о_человеке(имя, возраст, город):
print(f"Имя: {имя}, Возраст: {возраст}, Город: {город}")
# Порядок не важен при использовании именованных аргументов
информация_о_человеке(город="Москва", имя="Анна", возраст=25)
информация_о_человеке(имя="Петр", город="Санкт-Петербург", возраст=30)
Параметры функции могут иметь значения по умолчанию, которые используются, если аргумент не передан.
def приветствие(имя, приветствие="Привет", знак="!"):
print(f"{приветствие}, {имя}{знак}")
приветствие("Анна") # Привет, Анна!
приветствие("Петр", "Здравствуй") # Здравствуй, Петр!
приветствие("Мария", "Добрый день", ".") # Добрый день, Мария.
приветствие(имя="Сергей", знак="?") # Привет, Сергей?
Иногда нужно создать функцию, которая может принимать переменное количество аргументов.
def сумма_чисел(*числа):
print(f"Переданы числа: {числа}") # числа - это кортеж
return sum(числа)
print(сумма_чисел(1, 2, 3)) # 6
print(сумма_чисел(1, 2, 3, 4, 5)) # 15
print(сумма_чисел()) # 0
def информация_о_пользователе(**данные):
print(f"Получены данные: {данные}") # данные - это словарь
for ключ, значение in данные.items():
print(f"{ключ}: {значение}")
информация_о_пользователе(имя="Анна", возраст=25, город="Москва")
информация_о_пользователе(логин="user123", email="user@example.com")
def пример(обязательный, опциональный="по умолчанию", *args, **kwargs):
print(f"Обязательный: {обязательный}")
print(f"Опциональный: {опциональный}")
print(f"Дополнительные позиционные: {args}")
print(f"Дополнительные именованные: {kwargs}")
пример("обязательное", "новое значение", "доп1", "доп2", ключ1="знач1", ключ2="знач2")
Можно распаковать последовательности и словари при передаче их в функцию.
def приветствие(имя, возраст, город):
print(f"Привет, {имя}! Тебе {возраст} лет, и ты из {города}.")
# Распаковка списка/кортежа
данные = ["Анна", 25, "Москва"]
приветствие(*данные)
# Распаковка словаря
данные_словарь = {"имя": "Петр", "возраст": 30, "город": "Санкт-Петербург"}
приветствие(**данные_словарь)
Задание 1:
def персональное_приветствие(имя, приветствие="Привет"):
print(f"{приветствие}, {имя}!")
персональное_приветствие("Анна")
персональное_приветствие("Петр", "Здравствуйте")
Задание 2:
def среднее_значение(*числа):
if not числа:
return 0
return sum(числа) / len(числа)
print(среднее_значение(1, 2, 3, 4, 5))
print(среднее_значение(10, 20))
Задание 3:
def информация_о_студенте(имя, возраст, курс):
print("=" * 30)
print(f"Имя студента: {имя}")
print(f"Возраст: {возраст}")
print(f"Курс: {курс}")
print("=" * 30)
информация_о_студенте("Анна", 20, "Программирование")
Задание 4:
def профиль_пользователя(имя, *хобби, **контакты):
print(f"Имя: {имя}")
if хобби:
print("Хобби:")
for hobby in хобби:
print(f" - {hobby}")
if контакты:
print("Контактная информация:")
for тип, значение in контакты.items():
print(f" {тип}: {значение}")
профиль_пользователя("Анна", "чтение", "плавание",
email="anna@example.com", телефон="+7(123)456-78-90")