博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
装饰器概念及运用
阅读量:6720 次
发布时间:2019-06-25

本文共 2054 字,大约阅读时间需要 6 分钟。

#!/user/bin/env python3 # -*-encoding="utf-8"-*- # 1.装饰器概念 #装饰器本身就是函数,为别的函数添加附加功能。把握两个遵循的条件。 # 1.不修改被修饰的源代码内容。 # 2.不修改被修饰函数的调用方式。 # 装饰器=高阶函数+函数嵌套+闭包 # 高阶函数定义: # 1.函数接收的参数是一个函数名 # 2.函数的返回值是一个函数名 # 3.满足上述条件任意一个,都可称之为高阶函数 #把函数当做参数传给高阶函数: # def foo(): #     print("我的函数名是做为一个高阶函数传给其它的函数的") # def fc1(fucn): #     print("我是函数fc1,接受函数%s传过来的值" %fucn) #     fucn() # def fc2(fucn): #     print("我是函数fc2,函数返回值是%s" %fucn) #     return fucn # fc1(foo) # fc2(foo) # import time # def foo(): #     time.sleep(0.2) #     print("参数来自foo") # def fc1(fucn): #     ks_time=time.time() #     fucn() #     js_time=time.time() #     print("函数%s运行的时间是%s" %(fucn,js_time-ks_time)) # fc1(foo) # import time # def foo(): #     print('from the foo') # # def timmer(func): #     start_time=time.time() #     return func #     stop_time=time.time() #     print('函数%s 运行时间是%s' %(func,stop_time-start_time)) # foo=timmer(foo) # foo() # 高阶函数总结 # 1.函数接收的参数是一个函数名 #   作用:在不修改函数源代码的前提下,为函数添加新功能, #   不足:会改变函数的调用方式 # 2.函数的返回值是一个函数名 #   作用:不修改函数的调用方式 #   不足:不能添加新功能 # 函数嵌套的例子: # def father(name): #      print('from father %s' %name) #      def son(): #         print('from son') #         def grandson(): #             print('from grandson') #         grandson() #      son() # print(father('xfz')) #一层套一层的最里面的函数形成的就是一个闭包。 # 3.装饰器的框架 # import  time # def zsq(func): #     def gongnenghanshu(): #         ks_time=time.time() #         func() #         js_time=time.time() #         print("函数运行的时间是:%s"  %(js_time-ks_time)) #     return gongnenghanshu # # 例子: # @zsq # def foo(): #     time.sleep(3) #     print("运行了函数foo") # res=zsq(foo) #这是间接方式实现的装饰,但是更改了函数的调用方式.@语法甜糖,加到要调用装饰器的前面 # res() # foo() #4.加返回值的方法 例2 import  time def zsq(func):     def gongnenghanshu():         ks_time=time.time()         res=func()         js_time=time.time()         print("函数运行的时间是:%s"  %(js_time-ks_time))         return res     return gongnenghanshu # 例子: @zsq def foo():     time.sleep(1)     print("运行了函数foo")     return "我是要添加的函数返回值" z=foo() print(z)

转载于:https://www.cnblogs.com/Centwei/p/10466385.html

你可能感兴趣的文章
如何给Docker hub用户上传头像
查看>>
Docker入门系列之一:在一个Docker容器里运行指定的web应用
查看>>
健康链(HDC):基础公链为经,医疗引擎为纬
查看>>
中国《南方画刊》第2期
查看>>
以太坊智能合约示例
查看>>
区块链是什么?彻底理解只要150行java代码!
查看>>
使用MaxCompute Java SDK 执行任务卡住了,怎么办?
查看>>
《鹿鼎记》的第一遍读后感作文3600字
查看>>
66.添加自定义监控项目 配置邮件告警与测试及处理问题
查看>>
阿里云应用高可用服务公测发布
查看>>
芯片、半导体和集成电路之间的区别是什么?
查看>>
圣诞要礼物手势大全,礼物在哪里?
查看>>
OSChina 周日乱弹 ——我自己能发呆到世界毁灭
查看>>
OSChina 周二乱弹 —— 好好告别啊!不要舌吻!
查看>>
使用Cygwin和 mingw 安装 python paramiko模块
查看>>
前端那些事之hack篇
查看>>
结合COMSOL,浅谈多场耦合
查看>>
开发人员学Linux(2):VirtualBox中安装CentOS7系统设置
查看>>
HttpURLConnection原生JAVA http請求
查看>>
CentOS/Linux 开放80、8080端口或者开放某个端口
查看>>