标签:pre 赋值 python UNC turn 本质 代码 原函数 添加
# 开放屏蔽原则
# 对某些东西是开放的,对某些东西是屏蔽的
# 一般情况下是不允许在代码里边进行修改的。
# 一般是在外部进行开放的,只能在外部进行修改。
def outer(func): # func = f1
def inner():
print("hello")
print("hello")
print("hello")
r = func() # r = None
print("end")
print("end")
print("end")
return r
return inner # 返回inner的值 f1 就等于 inner 的内存地址
@outer
def f1():
print("F1")
f1()
# 装饰器的原理
# 使用装饰器,将原函数封装到新函数里面,执行原来的函数,并执行新的函数
# @ 符号有特殊性
# @outer
# 1、执行@后面的 outer 函数,并且将其下面的 f1 函数名(不加括号),当做参数传递进去
# 2、将outer的返回值重新赋值给 f1,f1 = outer 的返回值
# f1()就是新的f1函数,= inner
######################## 林hf
# 装饰器,用来装饰函数,可以让函数执行之前或执行之后做一些操作
# 装饰器本质:是函数,功能:装饰其他函数(就是为其他函数添加附加功能)
# 原则:
# 1、不能修改被装饰的函数的源代码
# 2、不能修改被装饰的函数的调用方式
# 1、新增一个功能,不能够修改一个函数的源代码,函数一旦写好了,原则上就不能修改源代码
"""
装饰器知识储备:
1、函数即"变量"
2、高阶函数
满足以下条件之一就可以
a、把一个函数名当做实参传给另个一个参数(在不修改被装饰函数源代码的情况下为其添加功能)
b、返回值中包含函数名(不修改函数的调用方式)
3、嵌套函数
在一个函数体内,用def去定义一个函数,叫嵌套
高阶函数 + 嵌套函数 = 》 装饰器
"""
标签:pre 赋值 python UNC turn 本质 代码 原函数 添加
原文地址:https://www.cnblogs.com/sidaofeng/p/10179067.html