【发布时间】:2017-05-10 13:29:18
【问题描述】:
我正在阅读 Python Cookbook 3rd Edition,遇到了 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'
我在前后打印'text'的值,替换正确发生:
x = matchcase('snake')
print("Original Text:",text)
print("After regsub:", re.sub('python', matchcase('snake'), text, flags=re.IGNORECASE))
最后一个“打印”命令显示替换正确发生,但我不确定这个嵌套函数如何“获取”:
PYTHON, python, Python
作为需要替换的词:
SNAKE, snake, Snake
内部函数replace如何获取其值'm'?
当 matchcase('snake') 被调用时,word 的值为 'snake'。
不清楚'm'的值是什么。
在这种情况下,任何人都可以帮助我清楚地理解这一点吗?
谢谢。
【问题讨论】:
标签: function python-3.x closures nested-function