码迷,mamicode.com
首页 > 编程语言 > 详细

python--装饰器

时间:2018-12-26 15:50:50      阅读:229      评论:0      收藏:0      [点我收藏+]

标签: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去定义一个函数,叫嵌套
高阶函数 + 嵌套函数 = 》 装饰器

"""



python--装饰器

标签:pre   赋值   python   UNC   turn   本质   代码   原函数   添加   

原文地址:https://www.cnblogs.com/sidaofeng/p/10179067.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!