标签:pen 条件 ack 源代码 调用 inner int tar return
1.闭包函数:
闭包=内部函数+定义函数时的环境
def outer():
x=10
def inner(): 条件一:inner 是内部函数
print(x) 条件二:外部的一个环境变量
return inner 内部函数innner就是一个闭包
2.装饰器(decrator) 为你之前的函数(程序)添加新的功能,而不修改源代码
举例:
import time
# f() #函数的调用方式不能改变,永远是f()的方式调用
#在不改变原函数代码的基础上,增加功能——用函数的方法
# def show_time(func):
# start=time.time()
# func()
# end=time.time()
# print("spend=%s"%(end-start)) #占位符的表示
#
#
# show_time(f) #这种方法改变了函数的调用方式,不行
##z装饰器的使用:
def show_time(func):
def inner(): ## 这里形成了一个闭包函数 innner内部函数
start=time.time()
func() func外部变量
end=time.time()
print("spend=%s"%(end-start)) #占位符的表示
return inner #返回的是innner的内存地址
@show_time ##这就是装饰器zaipython中的表达形式 == f=show_time(f),紧跟函数,在函数前面,实现在不改变函数源代码的前提下对函数功能的添加
def f():
print("hello world")
time.sleep(3)
# f=show_time(f)
!!!inner函数的形式必须与你所修改的函数的形式是一致的,比如f()--inner f(x)--inner(x)
f() 最终的调用形式并没有发生改变,却实现了函数功能的增加
标签:pen 条件 ack 源代码 调用 inner int tar return
原文地址:https://www.cnblogs.com/For-CNE/p/10915038.html