Вопрос проверяет знание способов передачи значений по умолчанию для аргументов функций, что важно для создания гибкого и тестируемого кода.
Передача значений по умолчанию для аргументов — это ключевой аспект проектирования гибких интерфейсов функций и классов. Прямое задание значений в сигнатуре функции — самый простой способ, но он не всегда подходит для сложных зависимостей или конфигураций.
Рассмотрим несколько подходов на примере Python.
# 1. Параметры по умолчанию
def connect_to_db(host='localhost', port=5432):
print(f'Connecting to {host}:{port}')
# 2. Конфигурационный словарь с дефолтами
def process_data(config):
defaults = {'timeout': 30, 'retries': 3}
final_config = {**defaults, **config} # Слияние
print(final_config)
# 3. Фабричная функция
def create_logger(level='INFO'):
# ... настройка логгера
def logger(message):
print(f'[{level}] {message}')
return logger
info_log = create_logger() # Использует уровень 'INFO' по умолчанию
# 4. Частичное применение (functools.partial)
from functools import partial
def send_email(to, subject, body):
print(f'Sending to {to}: {subject}')
send_to_admin = partial(send_email, to='admin@site.com')
send_to_admin(subject='Alert', body='Something happened.')Эти подходы применяются в разных контекстах. Параметры по умолчанию хороши для простых случаев. Конфигурационные объекты — для сложных настроек с множеством опций. Фабрики и частичное применение помогают создавать специализированные версии функций. Service Locator часто встречается в крупных фреймворках для управления зависимостями.
Вывод: Выбор альтернативы зависит от контекста: для простых значений используйте параметры по умолчанию, для управления зависимостями в больших приложениях — DI или Service Locator, а для конфигураций — объекты или фабрики.
Уровень
Рейтинг:
3
Сложность:
4
Навыки
JavaScript
Python
Ключевые слова
Подпишись на Python Developer в телеграм