关于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)
至于为什么要使用闭包,网上有很多举例,我写这个只是用于理解闭包代码,以后看到不至于蒙圈。