Бесплатный курс по python. Зарегистрируйтесь для отслеживания прогресса →

Python: Параметры по умолчанию

Напомним, что аргумент может быть необязательным. У такого аргумента есть значение по умолчанию.

Например, функция parent_for(), которую вы использовали в некоторых упражнениях, принимает имя ребёнка первым аргументом, а вторым — строку 'mother' или 'father'. Второй аргумент — необязательный, и если не указывать его, то автоматически по умолчанию будет использоваться 'mother'.

Эти два вызова равнозначны:

parent_for('Jon Snow')
parent_for('Jon Snow', 'mother')

Каким образом там сделаны аргументы по умолчанию? Давайте заглянем в определение этой функции:

def parent_for(child_name, parent_name='mother'):
    # какой-то код

Первый аргумент указан привычно — просто название переменной. Это делает аргумент обязательным.

Второй аргумент указан со значением в формате аргумент=какое_то_значение. Точно так же, как при создании переменной. Этот фрагмент =какое_то_значение делает аргумент необязательным, и задаёт ему значение по умолчанию.

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

  • def parent_for(child_name='Jon', who):
  • def calculate(a, b=90, c):
  • def get_prices(code=4161, quantity, place):

Задание

Реализуйте функцию get_hidden_card(), которая принимает на вход номер кредитки (состоящий из 16 цифр) в виде строки и возвращает его скрытую версию, которая может использоваться на сайте для отображения. Если исходная карта имела номер 2034399002125581, то скрытая версия выглядит так ****5581. Другими словами, функция заменяет первые 12 символов, на звездочки. Количество звездочек регулируется вторым необязательным параметром. Значение по умолчанию — 4.

# Кредитка передается внутрь как строка
get_hidden_card('2034399002121100', 1)  # "*1100"
get_hidden_card("1234567812345678", 2)  # "**5678"
get_hidden_card("1234567812345678", 3)  # "***5678"
get_hidden_card('1234567812345678')     # "****5678"

Для выполнения задания вам понадобится метод строки .rjust(), который заполняет строку указанным наполнителем.


Нашли ошибку? Есть что добавить? Пулреквесты приветствуются https://github.com/hexlet-basics
Если вы столкнулись с трудностями и не знаете, что делать, задайте вопрос в нашем большом и дружном сообществе