python closure的提问


def tag(tg):
    tg2 = tg
    tg2 = tg[0] + '/' + tg[1:]

    def inner(str):
        return tg + str + tg2
    return inner


b_tag = tag('<b>')
print(b_tag('Monty Python'))

outputs

Monty Python
为什么这里“Monty Python"会自动代入str这个parameter

这个是闭包效果
tag()返回一个子函数inner()

调用b_tag('Monty Python')就是调用inner()

def inner(str)子函数在def tag(tg)内定义,就可以访问到tag闭包内部的 tg 和 tg2变量

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632