首页 > 编程语言 >【python】装饰器参数

【python】装饰器参数

时间:2022-10-28 21:46:05浏览次数:55  
标签:bar 函数 python sum 参数 time print 装饰 def

  • 装饰器是AOP编程思想,给主体函数增加功能,又不让代码入侵到主体函数中,实现高内聚,低耦合。
  • 参数有两种,一种是功能函数带参数、另外一种是装饰器函数带参数,如果装饰功能部分代码也需要参数的话,可以在原来的两层函数外面再加一层,专门用来接收参数。
  • 下面我们通过两个小例子来学习
#功能函数带参数;
#实现一个功能函数为加法器,传入N位数字相加;装饰器-计算函数运行时间
import time
def show_time(f):
    def inner(*x):
        start = time.time()
        f(*x)
        end = time.time()
        print('speed %s'%(end-start))
    return inner

@show_time
def add(*a):
    sum = 0
    for i in a:
        sum += i
    print(sum)
    time.sleep(1)

add(1,2,3,5,6)
#装饰器函数带参数;
#实现一个功能函数为加法器,传入N位数字相加;装饰器-计算函数运行时间。另外增加一个打印日志的功能,实现功能输出日志,部分功能函数不需要输出日志
#bar调用的时候打印日志,add调用的时候不打印日志
import time
def logger(flag=''):
    def show_time(f):
        def inner(*x):
            start = time.time()
            print(start)
            f(*x)
            end = time.time()
            print(end)
            print('speed %s'%(end-start))
            if flag =='True':
                print('日志记录')
        return inner
    return show_time

@logger('True')       #bar = show_time(bar)
def bar():
    print('bar......')
    time.sleep(2)

@logger()
def add(*a):
    sum = 0
    for i in a:
        sum += i
    print(sum)
    time.sleep(1)

# add(1,2,3,5,6)
bar()

标签:bar,函数,python,sum,参数,time,print,装饰,def
From: https://www.cnblogs.com/xwltest/p/16837601.html

相关文章

  • 【基础知识】为python部署第三方库(设备不可联网版)
    “大家好哇!继上次我们说完怎么安装python之后,这一次给大家分享一下怎么根据自己的需求来部署所需要的库,如numpy库等。”01安装第三方库我们在前面已经说过了当设备可以......
  • Python time.strptime()方法
    time.strptime()函数根据指定的格式把一个时间字符串解析为时间元组。importtimefromdatetimeimportdatetimeresult=time.strptime("1.2022-12-1010:45:00","......
  • 10道Python面试题
    1、Python里面如何拷贝一个对象?(赋值,浅拷贝,深拷贝的区别)答:赋值(=),就是创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。浅拷贝:创建一个新的对象,但它包......
  • python时间戳转换
    importtime,datetime#当前时间转时间戳maintenance_time=(datetime.datetime.now()+datetime.timedelta()).strftime("%Y-%m-%d%H:%M:%S")struct_time=time.......
  • python 爬虫 ----- xpath
    xpath是在XML文档中搜索内容的一门语言html是xml的一个子集 xml代码示例"""<book><id>1</id><name>野花遍地香</name><price>1.23</price><......
  • Python-一个傻瓜可视化的神库Streamlit
    1.如何安装?和安装其他包一样,安装streamlit非常简单,一条命令即可➜pipinstallstreamlit考虑到streamlit会附带安装比较多的工具依赖包,为了不污染当前的主要环境,......
  • Python RabbitMQ pika的安装及direct路由模式的使用
    RabbitMQ是实现了高级消息队列协议(AMQP)的开源消息代理软件,RabbitMQ服务器是用Erlang语言编写的,而集群和故障转移是构建在开放电信平台框架上的。所有主要的编程语言均有......
  • PYTHON JSON EXCEL
    #+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++#pipinstallpandas#pipinstallopenpyxl#importjsonimporttimeimportpandasimpor......
  • python 爬虫 -----Bs4 爬取并且下载图片
    #1.拿到主页面主代码,拿到子页面连接地址,href#2.通过href拿到子页面内容,从子页面中找到图片的下载地址img->src#3.下载图片importrequestsfrombs4importBea......
  • 可变参数
    (1)可变参数:方法形参的个数是可以发生变化的(2)格式:属性类型...名字eg.int...args(3)底层:可变参数底层就是一个数组,只不过不需要我们自己创建,Java会帮我们创建好。(4)细节:1.......