Ё-маё. Я голову сломал. Бедный препод, интересно, он вообще поймёт, что ему ученик принес на проверку?
Скажите, как Вы научились ТАК мыслить? Потрясен.
Я так что-то и не понял, что это за объект -_sre (я так понял, что это из c-шного содержания модуля re, но что это именно...) и как он попадает внутрь функции replacer.
Вывод:
Учиться, учиться и учиться!
p.s. Я ради интересу накарябал свой вариант решения задачи, но блин... он как паровоз Черепанова рядом с космической ракетой...
Правда, регулярку не использовал.
Алан Гибизов, "как функция подставляется" - так же, как и всё остальное. Параметр передаёт sub - в качестве замены можно указывать функцию, которая получает match object и возвращает строку.
0xD34F, вот sub ищет паттерн «строка цифр» во входной строке; находит. Заменяет на функцию. Но где и как происходит передача этой функции параметра m, который match-объект? Я чувствую, что оно где-то неявно передаётся, вроде как при применении map. Но как мне понять при написании своего кода, что оно должно туда передаваться?
где и как происходит передача этой функции параметра m
Где-то внутри sub.
Как - повторяю, так же, как и всё остальное. Как числа, строки и т.д. Или вас детали интересуют? - понятия не имею, да это и неважно.
как мне понять при написании своего кода, что оно должно туда передаваться?
Это ОЧЕНЬ странный вопрос. На который мне ответить нечего. Вот вы выше упомянули map, применительно к оному ваш вопрос звучал бы так: как мне понять, что в переданную ему (map'у) функцию должны передаваться элементы обрабатываемого списка/строки/...?
Алан Гибизов,
Неявно вызывается.
re.sub(pattern, repl, string, count=0, flags=0)
Возвращает строку, полученную путем замены совпадения шаблона pattern в строке на замену repl.
repl может быть строкой или функцией;
Если repl является функцией, она вызывается для каждого совпадения шаблона.
Функция принимает Match Object аргумент, и возвращает строку замены.
Из оффициальной документации на re.
Но это конешно пипец эзотерика.