我读了Python食谱第三版和跨在2.6中讨论的话题来了“搜索和替换不区分大小写的文本”,其中作者讨论嵌套函数,象下面这样:困惑这个嵌套函数
def matchcase(word):
def replace(m):
text = m.group()
if text.isupper():
return word.upper()
elif text.islower():
return word.lower()
elif text[0].isupper():
return word.capitalize()
else:
return word
return replace
如果我有一些文字如下图所示:
text = 'UPPER PYTHON, lower python, Mixed Python'
和我之前和之后打印“文本”的价值,替代正确执行:
x = matchcase('snake')
print("Original Text:",text)
print("After regsub:", re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE))
最后的“打印”命令显示替代正常情况发生,但我不知道该嵌套函数如何“获得”了:
SNAKE, snake, Snake
:
PYTHON, python, Python
如需要的话与被取代
内部函数如何取代其值'm
'?
当调用matchcase('snake
')时,单词取值'snake
'。
不清楚'm
'的价值是什么。
在这种情况下,任何人都可以清楚地理解这一点吗?
感谢。