event получит 'login'; details станет кортежем из 'success' и переданного словаря, а metadata — словарём с timestamp и source.
Необходимо написать, что будет выведено в консоль при вызове функции с заданными параметрами:
event получит 'login'; details станет кортежем из 'success' и переданного словаря, а metadata — словарём с timestamp и source.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо написать, что будет выведено в консоль при вызове функции с заданными параметрами:
def log_event(event, *details, **metadata): print(event) print(details) print(metadata)
log_event("login", "success", {"login": "admin", "ip": "192.168.1.1"}, timestamp="[phone]", source="web")
Ответ
event получит 'login'; details станет кортежем из 'success' и переданного словаря, а metadata — словарём с timestamp и source.
Будет напечатано:
login
('success', {'login': 'admin', 'ip': '192.168.1.1'})
{'timestamp': '[phone]', 'source': 'web'}
Первый позиционный аргумент связывается с event. Остальные позиционные аргументы попадают в *details, поэтому словарь с login и ip остаётся одним элементом кортежа, а не превращается в metadata. Именованные аргументы собираются в **metadata. Маркер [phone] в условии — обычная строка; Python не интерпретирует его как телефон или специальную переменную.