2017-02-15 15 views
0

Ниже код заменяет соответствующие словарные ключи symblsDict со своими значениями в переменной line.Лямбда-функция, работающая в нижнем фрагменте кода python

keys1 = ('|'.join(symblsDict.keys())) 
robj1 = re.compile(keys1) 
result = robj1.sub(lambda m: symblsDict[m.group(0)], line) 

В этом контексте функция Lambda используется для объявления переменной m и это держать результат соответствия шаблону .Я не понимаю, как переменная m имеет результат сопоставления с образцом, так как мы не назначая никакого значения m, просто объявляя в функции?

Content of Dictionary:{'FTP': 'FTP,COND=(0,LE)', 'TOTAL.LIB6': 'TOTAL.TEST.LIB', 'TOTAL.CTRX': 'TOTAL.TEST.CTRX', 'DD1': 'ZZ.VVMSSB', 'JHSOUT': '*', 'SOUT': '*', 'SALEDB': 'TEST12', 'EMAIL': 'EMAIL,COND=(0,LE)' 
    Content of keys1: FTP|TOTAL.LIB6|TOTAL.CTRX|DD1|JHSOUT|SOUT|SALEDB|EMAIL 
    Content of line: //    SOUT=A, 
    Output://    *=A, 
+1

'm' объявляется в сигнатуре функции' lambda m: '. – TigerhawkT3

ответ

0

Функция лямбда передается к sub методу скомпилированного регулярных выражений шаблона. Этот метод будет вызывать функцию с объектом «match» каждый раз, когда шаблон соответствует некоторому тексту.

Когда функция вызывается, имя аргумента m привязывается к объекту совпадения. Выражение после двоеточия в lambda может использовать аргумент m для вычисления возвращаемого значения, которое sub будет заменено на строку.

 Смежные вопросы

  • Нет связанных вопросов^_^