Python_装饰器复习_30

复习:

# 装饰器的进阶    # functools.wraps    # 带参数的装饰器    # 多个装饰器装饰同一个函数# 周末的作业    # 文件操作    # 字符串处理    # 输入输出    # 流程控制

# 装饰器# 开发原则 : 开放封闭原则# 装饰器的作用 :在不改变原函数的调用方式的情况下,在函数的前后添加功能# 装饰器的本质 : 闭包函数
def wrapper(func):
    def inner(*args,**kwargs):
        print(‘在被装饰的函数执行之前做的事‘)
        ret = func(*args,**kwargs)
        print(‘在被装饰的函数执行之后做的事‘)
        return ret
    return inner

@wrapper   #holiday = wrapper(holiday)
def holiday(day):
    print(‘全体放假%s天‘%day)
    return ‘好开心‘

ret = holiday(3)
print(ret)
def outer(*args):
    print(args)
    print(*args)
    def inner(*args):
        print(‘inner : ‘,args)
    inner(*args)

outer(1,2,3,4)   #==outer(*[1,2,3,4])  #==outer(*(1,2,3,4))

  

原文地址:https://www.cnblogs.com/LXL616/p/10665550.html

时间: 2024-10-11 23:59:38

Python_装饰器复习_30的相关文章

Python(72)_生成器函数与装饰器复习

1  装饰器复习,注意打印的顺序 #-*-coding:utf-8-*- import os import time ''' 语法糖 ''' def wrapper(f): # 装饰器函数 ,f是被装饰的函数 def inner(*args,**kwargs): # 定义了内部函数,一定和return inner对应 ''' 在被装饰函数执行前要做的事情''' print('在被装饰函数执行前要做的事情') ret = f(*args,**kwargs) # 这句话是真正函数的执行 ''' 在被

python_装饰器_语法糖

什么是高阶函数? -- 把函数名当做参数传给另外一个函数,在另外一个函数中通过参数调用执行 #!/usr/bin/python3 __author__ = 'beimenchuixue' __blog__ = 'http://www.cnblogs.com/2bjiujiu/' def func_x(x): return x * 2 def func_y(y): return y * 3 def func_z(x, y): # 等价于 return func_x(5) + func_y(3) r

装饰器复习

装饰器前奏: 装饰器变形: (1)第一种变形 (2)第二种变形 (3)第三种变形 (4)第四种变形(正确且标准得装饰器) 装饰器装饰带有参数的函数: 带标志位的装饰器: 应用场景:例如装饰器是为了测试代码运行时间,但是生产环境上线是需要去掉多余得功能,这时候可以把装饰器标志位改为False即可,避免了频繁的删除操作. 带参数的装饰器: import time current_login = {'name': None, 'login': False} def timmer(func): def

python_装饰器

装饰器的语法结构: 使用关键字 @. #高阶函数 加上闭包返回值:高阶函数就是不在原函数体上数据和调用结果,添加其他的功能 def timmer(func): def warpper(): start_time = time.time() #开始时间 res = func() #这个的函数是调用的test() stop_time = time.time() #结束时间 print('查看我运行的时间是:%s' %(stop_time-start_time)) return res return

Python_装饰器,生成器_干货哦

import timeimport calendarimport os # 时间格式熟悉"""# 格式化成2016-03-20 11:45:39形式time01 = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())print()# 格式化成Sat Mar 28 22:24:24 2016形式print(time.strftime("%a %b %d %H:%M:%S %Y", ti

python_装饰器模式

装饰器模式定义:动态地给一个对象添加一些额外的职责. 在Python中Decorator mode可以按照像其它编程语言如C++, Java等的样子来实现,但是Python在应用装饰概念方面的能力上远不止于此,Python提供了一个语法和一个编程特性来加强这方面的功能. 首先需要了解一下Python中闭包的概念:如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure). def makeblod(fn): def wrapped():

python_装饰器——迭代器——生成器

一.装饰器 1.什么是装饰器? 器=>工具,装饰=>增加功能 1.不修改源代码 2.不修改调用方式 装饰器是在遵循1和2原则的基础上为被装饰对象增加功能的工具 2.实现无参装饰器 1.无参装饰器的模板 def outter(func): def wrapper(*args,**kwargs): res=func(*args,**kwargs) return res return wrapper 2.使用:在被装饰对象正上方单独一行 @无参装饰器名 def foo(): pass 3.实现有参装

Python_装饰器进阶_32

#带参数的装饰器 #500个函数 import time FLAGE = True def timmer_out(flag): def timmer(func): def inner(*args,**kwargs): if flag: start = time.time() ret = func(*args,**kwargs) end = time.time() print(end-start) return ret else: ret = func(*args, **kwargs) retur

python_如何定义带参数的装饰器?

案例: 实现一个装饰器,用它来检查被装饰函数的参数类型. 需求: 装饰器可以通过函数,指明函数参数类型,进行函数调用的时候,传入参数,检测到不匹配时,抛出异常 如何解决这个问题? 先要获取函数的签名,并且获得装饰器中参数,然后把函数签名和装饰器中参数对应绑定 把调用函数时候传入的参数和函数签名进行绑定 把实参和装饰器中定义的数据进行类型比较,不匹配抛出异常 #!/usr/bin/python3 from inspect import signature def check_type(*ty_ar