闭包初识闭包1234567891011121314151617181920212223242526272829def key(key): num = key def encrypt(content): num2 = num + 'nb' + content print(num2) return encryptf = key('6')f('8')def call_me(name): def respond_to(info): return name + ": " + info return respond_toergou = call_me('ergou')print(ergou('gun'))# # 定义一个外部函数# def func_out(num1):# # 定义一个内部函数# def func_inner(num2):# # 内部函数使用了外部函数的变量(num1)# result = num1 + num2# print("结果是:", result)# # 外部函数返回了内部函数,这里返回的内部函数就是闭包# return func_inner## # 创建闭包实例# f = func_out(1)# # 执行闭包# f(2)# f(3) 修饰器初识修饰器123456789101112131415161718192021222324252627import timedef get_time(fn): def iner(): begin = time.time() fn() end = time.time() print(f'函数花费了{end - begin}') return end - begin return iner@get_time # @check 等价于 comment = check(comment)def func1(): for i in range(3): time.sleep(0.5) print(i + 1)func1()print(func1())'''装饰器本质上就是一个闭包函数,它可以对已有函数进行额外的功能扩展。装饰器的语法格式:# 装饰器# def decorator(fn): # fn:被装饰的目标函数.# def inner():# ''执行函数之前''# fn() # 执行被装饰的目标函数# ''执行函数之后''# return inner''' 带参数的修饰器123456789101112131415# 带有参数的装饰器# 装饰器本身只能接收一个参数,而且必须为函数def speak(str): def dec(fn): def prt(): print('做事前开始BB' + str) fn() print('做事后开始BB' + str) return prt return dec@speak('你在干啥')def do_work(): print('冲冲冲')do_work()