Python的闭环

关于Python闭环的概念及使用,网上有很多博客记载,我感觉比较容易理解的是这篇文章。

但自己读完了用法之后,还是不能很好的理解,所以写一篇博客,说一下我的理解。

先上闭环的代码:

def my_wrapper(fun):
    def changeAndPrint(phones):
        standardPhoneNums = ["+91 "+c[-10:-5]+" "+c[-5:] for c in phones]
        fun(standardPhoneNums)
    return changeAndPrint

@my_wrapper
def sort_phone(plist):
    print(*sorted(plist), sep='\n')

if __name__ == '__main__':
    phoneList = ["07895462130", "919875641230", "9195969878"]
    # 目标是转换成标准的美国电话格式,并排序输出
    sort_phone(phoneList)

# 输出:
#+91 78954 62130
#+91 91959 69878
#+91 98756 41230

解释一下,看下图:

上面的这种写法,我是不太容易理解。那么我们还可以换一种写法,如下:

def my_wrapper(fun):
    def changeAndPrint(phones):
        standardPhoneNums = ["+91 "+c[-10:-5]+" "+c[-5:] for c in phones]
        fun(standardPhoneNums)
    return changeAndPrint

def sort_phone(plist):
    print(*sorted(plist), sep='\n')

if __name__ == '__main__':
    phoneList = ["07895462130", "919875641230", "9195969878"]
    # 目标是转换成标准的美国电话格式,并排序输出
    my_wrapper(sort_phone)(phoneList)

至于为什么要使用闭包,网上有很多举例,我写这个只是用于理解闭包代码,以后看到不至于蒙圈。

发布了90 篇原创文章 · 获赞 3 · 访问量 21万+

猜你喜欢

转载自blog.csdn.net/sunnyboychina/article/details/104517002