python学习系列之python装饰器基础(5)---多装饰器的使用

有些时候,可能实际工作中需要同时使用多个装饰器,具体怎么用,见代码:

#basic5.py

def auth1(func):
    def inner():
        print ‘before 1‘
        func()
        print ‘after 1‘
    return inner

def auth2(func):
    def inner():
        print ‘before 2‘
        func()
        print ‘after 2‘
    return inner

@auth2
@auth1
def f1():
    print ‘f1‘

执行部分:

#b5.py

#coding:utf-8

import basic5

basic5.f1()

执行结果:

#python b5.py
before 2
before 1
f1
after 1
after 2
时间: 2024-10-24 16:12:39

python学习系列之python装饰器基础(5)---多装饰器的使用的相关文章

Python学习系列(八)( 面向对象基础)

 Python学习系列(八)( 面向对象基础) Python学习系列(七)( 数据库编程) 一,面向对象 1,域:属于一个对象或类的变量.有两种类型,即实例变量—属于每个实例/类的对象:类变量—属于类本身. 2,类的方法:对象也可以使用属于类的函数来具有功能,这样的函数称之为类的方法.域和方法合称为类的属性.类使用class关键字创建,类的属性被列在一个缩进块中. 3,self:类的方法与普通的函数只有一个特别的区别----他们必须有一个额外的第一个参数名称,但是在调用的时候不能为其赋值,Pyt

python学习系列之python装饰器基础(1)

创建装饰器 # basic.py #首先定义一个装饰器auth: #一般装饰器 def auth(func):     def inner():         print 'before'         func()         print 'after'     return inner #带1个参数的装饰器 def auth_arg(func):     def inner(arg):         print 'before'         func(arg)         

python学习系列之python装饰器基础(2)---装饰含返回值的函数

在上篇基础(1)中,我写了一个装饰器及使用方法,但是如果遇到一个函数带返回值的话,就不好使了,因此重写一个装饰器如下: #basic2.py #coding:utf-8 def auth(func):     def inner(*arg, **kwargs):         print 'before'         temp = func(*arg,**kwargs) #这行是关键,func相当于fetch_server_list         print 'after'       

python学习系列之python装饰器基础(6)---装饰器加参数

一.常规的装饰器,比如 @auth,执行2步操作: 1.执行auth函数,并传参func进来 2.获取返回值,并赋值给被装饰器的函数的函数名(如让fetch_server_list等于返回值) 二.而带参数的装饰器,比如 @auth(before,after),则执行3步操作: 1.执行auth(before,after)这个函数,得到返回值ret(假设返回值为ret) 2.创建装饰器,获取返回值,拼接为@ret 3.相当于@auth函数的2个步骤: 1)执行ret函数 2)将ret函数的返回值

Python学习系列(九)(IO与异常处理)

Python学习系列(九)(IO与异常处理) Python学习系列(八)( 面向对象基础) 一,存储器 1,Python提供一个标准的模块,称为pickle,使用它既可以在一个文件中存储任何Python对象,又可以把它完整的取出来,这被称为持久的存储对象.类似的,还有一个功能与之相同的模块—cPickle,用c语言编写的,速度比pickle快1000倍. 2,示例: 1 import cPickle as p 2 shoplistfile='shoplist.data' 3 shoplist=[

python学习笔记之函数总结--高阶函数以及装饰器

python学习笔记之函数总结--高阶函数以及装饰器 Python特点: 1.不是纯函数式编程(允许变量存在): 2.支持高阶函数(可以传入函数作为变量): 3.支持闭包(可以返回函数): 4.有限度的支持匿名函数: 高阶函数: 1.变量可以指向函数: 2.函数的参数可以接收变量: 3.一个函数可以接收另一个函数作为参数: 下面我将示例一些函数的写法以及使用,并说明python中函数的特性: 1.基本的高阶函数示例: #!/usr/bin/env python def func():      

Python学习系列(一)(基础入门)

Python入门 本系列为Python学习相关笔记整理所得,IT人,多学无害,多多探索,激发学习兴趣,开拓思维,不求高大上,只求懂点皮毛,作为知识储备,不至于落后太远.如果兴趣学习者,推荐一个基础视频:http://edu.51cto.com/lesson/id-11637.html 本文主要介绍Python的相关背景,环境搭建. 一.了解Python 1,关于Python的语言特点: 借用Python官网Https://www.python.org的解释: Python is powerful

Python学习系列(二)(基础知识)

Python基础语法 Python学习系列(一)(基础入门) 对于任何一门语言的学习,学语法是最枯燥无味的,但又不得不学,基础概念较繁琐,本文将不多涉及概念解释,用例子进行相关解析,适当与C语言对比,避免陷入语法的苦海.我认为初学者学习语法的目标是学会使用即可,关于对概念的深入理解,剖析,没有一定的知识积累是很难做到的. 学习Python,基本语法不是特别难,有了C的基本知识,理解比较容易.本文的主要内容是Python基础语法,学完后,能熟练使用就好.(开发环境依然是Python2.7,简单使用

Python学习系列(五)(文件操作及其字典)

Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件 在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出,也可以指定每次read读多少字节,例如: 1 #coding:utf-8 2 fn='test1.py' 3 fp=open(fn,'r') #以读的方式打开文件,文件必须首先存在和,.文件在同一目录下py 4 print 'reading pos:',fp.tell() 5 r=fp.read(20) #