码迷,mamicode.com
首页 > 其他好文 > 详细

D20-05 函数闭包 装饰器 06 ..解压序列

时间:2018-09-06 18:21:01      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:res   年龄   style   col   技巧   地址   赋值   star   wrap   

框架

#装饰器的框架
import time
def timmer(func):  #func=test
    def wrapper():
        start_time=time.time()
        func() #就是在运行test
        stop_time=time.time()
        print(‘运行时间是%s‘%(start_time-stop_time))
    return wrapper

def test():
    time.sleep(3)
    print(‘test函数运行完毕‘)

test = timmer(test) #返回的是wrapper的地址 另res=timmer(test)
test() #执行的是wrapper()

 但是以上方法需要给test做赋值工作,需要将所有的函数都一一赋值,所以有个小技巧。

#语法糖 @timmer 就相当于 test = timmer(test)

#装饰器的框架
import time
def timmer(func):  #func=test
    def wrapper():
        start_time=time.time()
        func() #就是在运行test
        stop_time=time.time()
        print(‘运行时间是%s‘%(start_time-stop_time))
    return wrapper
@timmer  #就相当于执行的执行的test=timmer(test)
def test():
    time.sleep(3)
    print(‘test函数运行完毕‘)

test() #执行的是wrapper()

  

返回值 将res赋值func()

#装饰器的框架
import time
def timmer(func):  #func=test
    def wrapper():
        start_time=time.time()
        res = func() #就是在运行test,有运行的结果
        stop_time=time.time()
        print(‘运行时间是%s‘%(start_time-stop_time))
        return res
    return wrapper
@timmer
def test():
    time.sleep(1)
    print(‘test函数运行完毕‘)
    return ‘这是test的返回值‘

test() #执行的是wrapper()

  

非固定参数

import time
def timmer(func):  #func=test
    def wrapper(*args,**kwargs):
        start_time=time.time()
        res = func(*args,**kwargs) #就是在运行test,有运行的结果
        stop_time=time.time()
        print(‘运行时间是%s‘%(start_time-stop_time))
        return res
    return wrapper
@timmer
def test(name,age):
    time.sleep(1)
    print(‘test函数运行完毕,名字是%s,年龄是%s‘%(name,age))
    return ‘这是test的返回值‘

test(‘liu‘,18) #执行的是wrapper()

  

解压序列

假设有一个很长的序列 ,只想取第一个和最后一个值

1 >>> l=[10,3,2,3,5,1,2,3,5,8,9]
2 >>> a,*_,c=l   #取第一个值和最后一个值
3 >>> a
4 10
5 >>> c
6 9

  

值互换

1 #交换f1和f2的值
 2 
 3 >>> f1=1
 4 >>> f2=2
 5 
 6 
 7 >>> f1,f2=f2,f1
 8 >>> f1
 9 2
10 >>> f2
11 1

  

D20-05 函数闭包 装饰器 06 ..解压序列

标签:res   年龄   style   col   技巧   地址   赋值   star   wrap   

原文地址:https://www.cnblogs.com/liupingtao/p/9599340.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!