Python函数修饰符(装饰器)的使用

1.修饰符的来源

修饰符是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。

修饰符是解决这类问题的绝佳设计,有了修饰符,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,修饰符的作用就是为已经存在的对象添加额外的功能。

如下:

import time

def

timeslong(func):

start = time.clock()

print("It's time starting ! ")

func()

print("It's time ending ! ")

end = time.clock()

return "It's used : %s ." % (end - start).

上面的程序中,定义了一个函数,对另外一个对象的运行时间进行计算,如果采用通常的方式需要将 func() 重新在 timeslong 中重新写一遍。为了简化这种操作,便提出了修饰符的概念。

如下:

import time

def

timeslong(func):

def call():

start = time.clock()

print("It's time starting ! ")

func()

print("It's time ending ! ")

end = time.clock()

10.   return "It's used : %s ." % (end -

start)

return call

13. @timeslong

14. def f():

15.

y = 0

16.

for i in range(10):

17.

y = y + i + 1

18.

print(y)

19.

return y

21. print(f())

这样出现便不用再函数内部再进行嵌入函数,通过 @timeslong 对其进行修饰达到目的,是整个代码美观,而且少些部分代码

修饰符也可以通过类来进行使用,共享该类,如下为一个实例:

class

timeslong(object):

def

__init__(self,func):

self.f = func

def

__call__(self):

start = time.clock()

print("It's time starting ! ")

self.f()

print("It's time ending ! ")

end = time.clock()

return "It's used : %s ." % (end - start)

12. @timeslong

13. def f():

14.

y = 0

15.

for i in range(10):

16.

y = y + i + 1

17.

print(y)

18.

return y

20. print(f())

2.  Python内置的修饰符

内置的修饰符有三个,分别是staticmethod、classmethod 和 property,作用分别是把类中定义的实例方法变成静态方法、类方法和类属性。由于模块里可以定义函数,所以静态方法和类方法的用处并不是太多。

class

Hello(object):

def __init__:

...

@classmethod

def

print_hello(cls):

print("Hello")

classmethod 修饰过后,print_hello() 就变成了类方法,可以直接通过 Hello.print_hello() 调用,而无需绑定实例对象了。

python修饰符号的使用_Python 函数修饰符(装饰器)的使用相关推荐

  1. Python 中的闭包、匿名函数、decorator 装饰器与python的偏函数

    Python中的闭包 def calc_sum(lst):def lazy_sum():return sum(lst)return lazy_sum 像这种内层函数引用了外层函数的变量(参数也算变量) ...

  2. python装饰品详解视频_Python中的各种装饰器详解

    Python装饰器,分两部分,一是装饰器本身的定义,一是被装饰器对象的定义. 一.函数式装饰器:装饰器本身是一个函数. 1.装饰函数:被装饰对象是一个函数 [1]装饰器无参数: a.被装饰对象无参数: ...

  3. python修饰符作用_python函数修饰符@的使用

    python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志.性能测试.事务处理等等. 创建函数修饰符的规则: (1)修饰符是一个函数 (2)修饰符取被修饰函数为参数 (3)修饰符返回一个 ...

  4. python中sort返回值_Python函数你真的都学会了吗?来看看这篇Python高阶函数!

    二.高阶函数 高级函数, 英文叫 Higher-order Function. 那么什么是高阶函数呢? 在说明什么是=高阶函数之前, 我们需要对函数再做进一步的理解! 2.1 函数的本质 函数的本质是 ...

  5. python: 从函数了解到装饰器

    Table of Contents 1. 简单了解函数 1.1. 函数是什么 1.2. 函数的好处 1.3. 函数和过程的区别 1.3.1. python的函数和过程 1.3.2. common li ...

  6. python两个装饰器执行顺序_python中多个装饰器的执行顺序

    今天讲一下python中装饰器的执行顺序,以两个装饰器为例. 装饰器代码如下: def wrapper_out1(func): print('--out11--') def inner1(*args, ...

  7. python两个装饰器执行顺序_python中多个装饰器的执行顺序详解

    装饰器是程序开发中经常会用到的一个功能,也是python语言开发的基础知识,如果能够在程序中合理的使用装饰器,不仅可以提高开发效率,而且可以让写的代码看上去显的高大上^_^ 使用场景 可以用到装饰器的 ...

  8. python装饰器的顺序_python中多个装饰器的执行顺序详解

    装饰器是程序开发中经常会用到的一个功能,也是python语言开发的基础知识,如果能够在程序中合理的使用装饰器,不仅可以提高开发效率,而且可以让写的代码看上去显的高大上^_^ 使用场景 可以用到装饰器的 ...

  9. python装饰器与闭包_python中闭包和装饰器的理解(关于python中闭包和装饰器解释最好的文章)。...

    转载:http://python.jobbole.com/81683/ 呵呵!作为一名教python的老师,我发现学生们基本上一开始很难搞定python的装饰器,也许因为装饰器确实很难懂.搞定装饰器需 ...

最新文章

  1. Community Server专题五:IHttpHandlerFactory
  2. python xlrd简单读取excel
  3. 转载:浅谈软件测试流程
  4. Sql Server截断日志(转)
  5. ML之NB、LoR:基于NB和LoR算法对Kaggle IMDB影评数据集(国外类似豆瓣电影)情感分析进行分类
  6. python函数的作用复用代码_Python-函数和代码复用
  7. 软件结构B/S和C/S
  8. php苹果app微信支付 无法返回,微信支付,php_微信支付APP返回-1怎么解决,微信支付,php,移动app - phpStudy...
  9. 【java笔记】Iterator迭代器 增强for
  10. J2EE项目中异常处理
  11. java集合类(三)About Iterator Vector(Stack)
  12. 数字臧品系统开发运行逻辑数字臧品系统开发源码搭建流程
  13. 京东数科发布《京东区块链技术实践白皮书2020》(附白皮书下载链接)
  14. DirectX 环境搭建问题汇总
  15. ckplayer6.8修改logo
  16. 有一分数序列:2/1,3/2,5/3...求出这个数列的前20项之和(C语言原理详解)。
  17. mysql比赛_在Windows环境下的MySQL数据库,精彩比赛
  18. Anbox 编译和Anbox Docker 下编译运行
  19. 【游戏行业观察】篇1:成龙与《传奇》:传统网游营销模式的变迁
  20. 【专题5: 硬件设计】 之 【9.案例一:门控开关,制作BOM表和成本核算】

热门文章

  1. 企业使用大数据分析有什么好处
  2. 服务器安装mysql文档_Linux 服务器安装MySQL数据库
  3. 好用的import: Vite的Glob 导入
  4. java char 比较,为什么我在Java中使用char和int进行比较?
  5. list集合排序_Java面试第七部分 Java的集合
  6. HTML语言中 blur()方法,jQuery的blur()方法怎么用?
  7. mysql lock not wait_【MySQL】关于MySQL出现lock wait timeout exceeded 的解决方案
  8. [Hbase]Hbase常用的优化方法
  9. 常用js(javascript)函数
  10. ES6 iterator 迭代器