函数的有用信息,装饰器 day12

一 函数的有用信息

本函数的功能:绘图功能,实时接收数据并绘图.:return: 绘图需要的数据,返回给前端某标签


def f1():
    ‘‘‘
    本函数的功能:绘图功能,实时接收数据并绘图.
    :return: 绘图需要的数据,返回给前端某标签
    ‘‘‘
    print(f1.__doc__)
    print(f1.__name__)
    print(666)

print(f1.__doc__)  #获取函数的说明信息
print(f1.__name__)  # 获取函数的名字
f1()



from functools import wraps
def wrapper(func):
    @wraps(func)
    def inner(*args,**kwargs):
        ‘‘‘执行函数前进行的操作‘‘‘
        ret = func(*args,**kwargs)
        ‘‘‘执行函数后进行的操作‘‘‘
        return ret
    return inner

@wrapper
def f1():
    ‘‘‘
    本函数的功能:绘图功能,实时接收数据并绘图.
    :return: 绘图需要的数据,返回给前端某标签
    ‘‘‘
    print(f1.__doc__)
    print(f1.__name__)
f1()

 



def wrapper(func):
    def inner(*args,**kwargs):
        ‘‘‘执行函数前进行的操作‘‘‘
        ret = func(*args,**kwargs)
        ‘‘‘执行函数后进行的操作‘‘‘
        return ret
    return inner
@wrapper # f1 = wrapper(f1)
def f1(a,b,c,d):  # 接收函数的时候,* 聚合.
    print(a,b)
    # print(args) # (1,2,3,4)
f1(1,2,2,3)
f1(*[1,2,3,4])  # 执行函数时,加个*打散


二 带参数的装饰器

import time
flag = False
def timmer_out(f):
    def timmer(func):
        def inner(*args,**kwargs):
            ‘‘‘执行函数前操作‘‘‘
            if f:
                start_time = time.time()
                time.sleep(0.3)
                ret = func(*args,**kwargs)
                ‘‘‘执行函数后操作‘‘‘
                end_time = time.time()
                print(‘执行效率%s‘%(end_time - start_time))
                return ret
            else:
                ret = func(*args,**kwargs)
                return ret
        return inner
    return timmer

@timmer_out(flag)  # 1, timmer_out(flag)  返回 timmer  --->
def f1():         # 2,  @timmer 就是你认识的装饰器 f1 = timmer(f1)
    print(666)
@timmer_out(flag)  # f2 = timmer(f2)
def f2():
    print(777)
f1()
f2()

 
def wrapper1(func):  # func = f
    def inner1():
        print(‘wrapper1 ,before func‘)
        func()
        print(‘wrapper1 ,after func‘)
    return inner1

def wrapper2(func):  # func = inner1
    def inner2():
        print(‘wrapper2 ,before func‘)
        func()
        print(‘wrapper2 ,after func‘)
    return inner2

@wrapper2     # f = wrapper2(f)  里面的f == inner1   外面的f = inner2
@wrapper1     # f = wrapper1(f)  返回inner1    f = inner1
def f():
    print(‘in f‘)
f()  # inner2()




def wrapper1(func):  # func = f
    def inner1():
        print(‘wrapper1 ,before func‘)
        func()
        print(‘wrapper1 ,after func‘)
    return inner1

def wrapper2(func):  # func = inner1
    def inner2():
        print(‘wrapper2 ,before func‘)
        func()
        print(‘wrapper2 ,after func‘)
    return inner2

@wrapper2     # f = wrapper2(f)  里面的f == inner1   外面的f = inner2
@wrapper1     # f = wrapper1(f)  返回inner1    f = inner1
def f():
    print(‘in f‘)
f()  # inner2()




原文地址:https://www.cnblogs.com/chongdongxiaoyu/p/8419256.html

时间: 2024-10-11 06:41:24

函数的有用信息,装饰器 day12的相关文章

Python全栈__函数的有用信息、带参数的装饰器、多个装饰器装饰一个函数

1.函数的有用信息 代码1: 1 def login(username, password): 2 """ 3 此函数需要用户名,密码两个参数,完成的是登录的功能. 4 :return: True 登录成功. False登录失败. 5 """ 6 print(login.__name__) 7 print(login.__doc__) 8 print('登录成功...') 9 return True 10 11 print(login.__nam

python 第十二天2018.04.01 带参数的装饰器,,函数的有用信息

一.带参数的装饰器,函数的有用信息 def func1(): '''此函数的功能是完成的登陆的功能 return: 返回值是登陆成功与否(true,false) ''' print(333) func1() print(func1.__name__)#func1 print(func1.__doc__)#此函数的功能是完成的登陆的功能,return: 返回值是登陆成功与否 打印函数名 from functools import wraps def wrapper(f): @wraps(f) de

带参数的装饰器,多个装饰器装饰一个函数,函数的有用信息。

带参数的装饰器.import time def timer_out(flag1): #falg1 = flag def timer(f): def inner(*args, **kwargs): if flag1: start_time = time.time() time.sleep(0.3) ret = f(*args, **kwargs) end_time = time.time() print('执行效率%s' % (end_time-start_time)) return ret el

Python的函数式编程-传入函数、排序算法、函数作为返回值、匿名函数、偏函数、装饰器

函数是Python内建支持的一种封装,我们通过把大段代码拆成函数,通过一层一层的函数调用,就可以把复杂任务分解成简单的任务,这种分解可以称之为面向过程的程序设计.函数就是面向过程的程序设计的基本单元. 传入函数 函数的本身也可以作为参数. Python内建的mapreduce的函数.(来源于谷歌的,后来被道格这家伙开源了,成为当今处理大数据最火热的hadoop中的计算模型---MapReduce) 我们先看map.map()函数接收两个参数,一个是函数,一个是序列,map将传入的函数依次作用到序

Day 19 函数之闭包、装饰器

一.什么是装饰器 器即函数 装饰即修饰,意指为其他函数添加新功能 装饰器定义:本质就是函数,功能是为其他函数添加新功能 二.装饰器遵循的原则 1.不修改被装饰函数的源代码(开放封闭原则) 2.为被装饰函数添加新功能后,不修改被修饰函数的调用方式 三.高阶函数 高阶函数总结 1.函数接收的参数是一个函数名 作用:在不修改函数源代码的前提下,为函数添加新功能, 不足:会改变函数的调用方式 2.函数的返回值是一个函数名 作用:不修改函数的调用方式 不足:不能添加新功能 其.程序: work: #! /

闭包函数、无参装饰器2

一.闭包函数 闭包函数:函数内部定义函数,成为内部函数.该内部函数包含对外部作用域,而不是对全局作用域名字的引用,那么该内部函数成为闭包函数. name='alex' #定义全局变量name='alex' def func(): name='egon' #定义局部变量name='egon' def bar(): print(name) return bar #返回bar函数名 b=func() #执行func()结果为bar的函数名 相当于b=bar name='haha' #重新定义全局变量n

【函数】04、装饰器

一.高阶函数 python中函数是一等对象(first class):函数也是对象,并且它可以像普通对象一样复制.作为参数.作为返回值. 返回函数或者参数是函数的函数就是高阶函数,也被称为函数式编程 In [23]: def counter(base):     ...:     def inc(x=1):     ...:         nonlocal base     ...:         base += x     ...:         return base     ...:

函数的闭包和装饰器

函数的闭包: #1.闭 必须是内部的函数 #2.包 引用了外部作用域中的变量 命名空间: 一共有三种命名空间从大范围到小范围的顺序:内置命名空间.全局命名空间.局部命名空间 作用域(包括函数的作用域链): 小范围的可以用大范围的但是大范围的不能用小范围的范围从大到小(图) 在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推.如果都没有,报错 函数的嵌套: 嵌套调用 嵌套定义:定义在内部的函数无法直接在全局被调用 函数

python 函数名 、闭包 装饰器 day13

1,函数名的使用. 函数名是函数的名字,本质就是变量,特殊的变量.函数名()加括号就是执行此函数. 1,单独打印函数名就是此函数的内存地址. def func1(): print(555) print(func1) # <function func1 at 0x0000027B7CF1A048> 2,函数名的赋值 def func(): print(666) f = func print(f()) 3,函数名可以作为容器类数据的元素. def f1(): print(111) def f2()