/
Программирование
/
Курс 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

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

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