装饰器--对同一个函数进行两次进行装饰,函数执行顺序
2018-03-11 19:16
239 查看
纯程序检验两个装饰器装饰同一函数执行顺序!
概念:
函数:完成一个具体的功能。
闭包:两个函数的嵌套,外部函数返回内部函数的引用,且外部函数必须传参。
装饰器:在不改变函数的情况下去做一些扩展。
执行顺序如下!
# 运行顺序检验
def set_test1(fun):
print("第一歩!")
def call_test1():
print("第四歩")
fun()
print("第六歩")
return call_test1
def set_test2(fun):
print("第二歩")
def call_test2():
print("第三歩")
fun()
print("第七歩")
return call_test2
@set_test2
@set_test1
def work():
print("第五歩")
def main():
work()
print("第八歩!")
if __name__ == "__main__":
main()
概念:
函数:完成一个具体的功能。
闭包:两个函数的嵌套,外部函数返回内部函数的引用,且外部函数必须传参。
装饰器:在不改变函数的情况下去做一些扩展。
执行顺序如下!
# 运行顺序检验
def set_test1(fun):
print("第一歩!")
def call_test1():
print("第四歩")
fun()
print("第六歩")
return call_test1
def set_test2(fun):
print("第二歩")
def call_test2():
print("第三歩")
fun()
print("第七歩")
return call_test2
@set_test2
@set_test1
def work():
print("第五歩")
def main():
work()
print("第八歩!")
if __name__ == "__main__":
main()
相关文章推荐
- fork函数的两次返回和父子进程的执行顺序简介
- unity日常——函数执行顺序
- 函数执行顺序
- 创建和销毁过程几个函数的执行顺序
- 关于c#构造函数执行顺序的一些学习内容
- 装饰器1、无参数的装饰器 2、有参数的装饰器 3、装饰器本身带参数的以及如果函数带return结果的情况
- java构造函数和初始化函数的执行顺序
- SQL Server 第四堂课,创建存储过程。存储过程是一组编译在单个执行计划中的transact-SQL语句。存储过程相当于C#函数,可以允许模块化程序设计,允许更快执行如果某操作需要大量transct-SQL代码或需要重复执行,将在创建存储过程中对其进行分析和优化。
- [unity3d]unity中几个系统自带的函数的执行顺序
- unity 事件函数执行顺序
- ajax回调函数执行顺序带来的同步异步问题
- 成员变量和构造函数执行顺序
- Unity5脚本事件函数及其执行顺序
- Javascript 事件的捕获,冒泡和目标阶段的回调函数执行顺序
- Unity3d MonoBehaviour的可重写函数 及部分执行先后顺序
- 在订单提交后,数量进行减少,执行的函数
- 关于TimePickerDialog中OnTimeSet()函数执行两次的解决方法
- vue生命周期中,钩子函数执行顺序
- Unity3D中自带事件函数的执行顺序
- 【Unity3D】 Unity3D中自带事件函数的执行顺序