我讀了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
'的價值是什麼。
在這種情況下,任何人都可以清楚地理解這一點嗎?
感謝。