函数内部的函数如何在python中工作

时间:2018-07-04 04:57:16

标签: python function

我是一名新的python学习者,从一些字符串练习开始。我想知道“ 火柴盒”中的“ 替换”功能实际上如何工作。

import re
a = 'UPPER PYTHON, lower python, Mixed Python'

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

print (matchcase('conran'))

print (re.sub('python',matchcase('conran'),a , flags=re.IGNORECASE))

输出:UPPER CONRAN,下康兰,混合康兰

1 个答案:

答案 0 :(得分:1)

re.sub可以接受在每次匹配时都调用的函数参数,而不是文本替换。

您的外部函数返回另一个可以访问传递的字符串的函数(高阶函数)(这称为闭包)。因此,在相同情况下,re.sub会使用“ python”调用此内部函数,并返回“ conran”。