/
Программирование
/
Курс Python
/

Необязательные параметры функций

Python: Необязательные параметры функций

Функции могут принимать параметры. Иногда удобно задать значение сразу в определении функции, чтобы не указывать его при каждом вызове. Такое значение называется значением по умолчанию.

Если аргумент не передан, используется это значение. Если аргумент указан, то оно заменяет умолчание.

Пример: повторение текста

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

def repeat(text, times=1):
    return text * times


print(repeat("Hi"))  # => Hi
print(repeat("Hi", 3))  # => HiHiHi

В этом примере используется операция умножения строки на число. Она работает так: берется исходная строка и повторяется указанное количество раз. Например, "A" * 5 превратится в "AAAAA". Это встроенная возможность Python, которая часто применяется при генерации шаблонов, разделителей и повторяющихся фрагментов текста.

def repeat(text, times=2):    ← times имеет значение по умолчанию
    ...

repeat('go')        →  times = 2  (по умолчанию)
repeat('go', 5)     →  times = 5  (явно указано)

Необязательные параметры всегда указываются в конце списка параметров. Поэтому в примере сначала идет обязательный параметр text, а уже после него располагается параметр times со значением по умолчанию.

Пример: склейка слов с разделителем

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

def join_words(word1, word2, sep=" "):
    return word1 + sep + word2


print(join_words("King", "Road"))  # => King Road
print(join_words("Dragon", "stone", "-"))  # => Dragon-stone

Пример: несколько параметров по умолчанию

Функция может содержать более одного параметра со значениями по умолчанию. Например, сделаем функцию, которая строит строку-разделитель. По умолчанию символом является дефис, а длина равна 10.

def make_line(symbol="-", length=10):
    return symbol * length


print(make_line())  # => ----------
print(make_line("*"))  # => **********
print(make_line("*", 5))  # => *****
print(make_line("#", 3))  # => ###

Задание

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

# Кредитка передается внутрь как строка
# Второй параметр не передается, значит звездочек будет 4
get_hidden_card("1234567812345678")  # ****5678

get_hidden_card("1234567812345678", 2)  # **5678
get_hidden_card("1234567812345678", 3)  # ***5678

# Или используя переменные

card_number = "2034399002121100"
get_hidden_card(card_number)  # ****1100
get_hidden_card(card_number, 1)  # *1100

Для выполнения задания вам понадобится механизм повторения строк, который повторяет строку указанное количество раз. Для этого достаточно умножить строку на число повторений:

"+" * 5  # +++++
"o" * 3  # ooo

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются