Как мне установить необязательные аргументы? - PullRequest
0 голосов
/ 07 ноября 2018

, пожалуйста, помогите, у меня есть эта функция в моем коде, которая будет модулем в будущем. Модули пока не созданы, но я бы хотел, чтобы пользователи могли изменить логическое совпадение на False, но я не хочу заставлять их заполнять его на тот случай, если они захотят сохранить его True Поэтому я был бы рад, если бы был необходим только 1 вход, но второй (match = False) необязательный. Это модуль, который возвращает почтовые индексы или названия городов на основе словаря почтовых индексов.

def returnCode(city):
    cityOriginal = city
    city = str(city)
    match = True
    if match:
        city = get_close_matches(city, codes.values())[0]
    if hasNumbers(city) == True and hasNumbers(cityOriginal) == False:
        city = sub('[0123456789]', '1', city)
    return cityDict[city]

returnCode('Berlin')
#returnCode('Berlin', match=False) ... how to?

1 Ответ

0 голосов
/ 07 ноября 2018

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

def returnCode(city, match=True):
    cityOriginal = city
    city = str(city)
    if match:
        city = get_close_matches(city, codes.values())[0]
    if hasNumbers(city) == True and hasNumbers(cityOriginal) == False:
        city = sub('[0123456789]', '1', city)
    return cityDict[city]

returnCode('Berlin')
returnCode('Berlin', match=False) # these will both run just fine

Это на самом деле все, что вам нужно, вы были очень близки :), если совпадение не указано, по умолчанию будет установлено значение True, иначе оно может быть установлено вызывающим абонентом, если они того пожелают.

...