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

框架

#装饰器的框架
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

  

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

时间: 2024-10-07 23:41:13

D20-05 函数闭包 装饰器 06 ..解压序列的相关文章

python3命名空间与作用域,闭包函数,装饰器

一.命名空间与作用域 命名空间是名字和对象的映射,就像是字典,key是变量名,value是变量的值 1.命名空间 name='egon' #定义变量 def func(): #定义函数 pass class Foo: #定义类 pass 2.命名空间的分类 (1)内置名称空间: 随着python解释器的启动而产生,包括异常类型.内建函数和特殊方法,可以代码中任意地方调用 print(sum) print(max) print(min) print(max([1,2,3])) import bui

python_day04 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式

本节课重要知识点内容如下: 函数嵌套 名称空间和作用域 闭包 装饰器 迭代器 生成器 列表解析 三元表达式 生成器表达式 1.函数嵌套 函数的嵌套调用:在调用一个函数的过程中,又调用了其他函数函数的嵌套定义:在一个函数的内部,又定义另外一个函数 def bar(): print('from nbar')def foo(): print('from foo') bar()foo()def max2(x,y): if x > y: return x else: return ydef max4(a,

【Python基础】高阶函数+函数嵌套+闭包 ==装饰器

高阶函数+函数嵌套+闭包 == 装饰器 一 什么是装饰器 二 装饰器需要遵循的原则 三 实现装饰器知识储备 四 高阶函数 五 函数嵌套 六 闭包 七 无参装饰器 八 装饰器应用示例 九 超时装饰器 参考: https://www.cnblogs.com/linhaifeng/articles/6140395.html https://www.cnblogs.com/haiyan123/p/8387769.html 原文地址:https://www.cnblogs.com/XJT2018/p/11

CSIC_716_20191112【闭包函数和装饰器】

闭包函数 什么是闭包函数:闭包函数是函数嵌套.函数对象.名称空间和作用域的集合体. 闭包函数必须在函数内部定义,闭包函数可以引用外层函数的名字. # _*_ coding: gbk _*_ # @Author: Wonder def outer(): def inner(): #代码体 return inner() outer() # 调用闭包函数 装饰器 什么是装饰器:装饰器本身是一个函数,是在不修改其他函数源代码以及调用方式的前提下,给其他函数增加功能的函数. 装饰器遵循开放闭合原则.即对函

闭包函数、装饰器以及语法糖

闭包函数: 1.闭包函数必须在函数内部定义 2.闭包函数可以引用外层函数的名字 闭包函数是 函数嵌套.函数对象.名称空间与作用域 结合体. # 直接传参 def func(x): print(x) func(1000) # 通过闭包函数传参 def outer(number): # number = 100 # inner就是闭包函数 def inner(): print(number) return inner func = outer(1000) # ---> inner地址 ---> f

python day4笔记 常用内置函数与装饰器

1.常用的python函数 abs             求绝对值 all               判断迭代器中所有的数据是否为真或者可迭代数据为空,返回真,否则返回假 any             判断迭代器中的数据是否有一个为真,有返回真,可迭代数据为空或者没有真,返回假 bin             转换整数为二进制字符串 hex            转换整数为十六进制字符串 oct             转换整数为八进制字符串 bool           转换数据为布尔值

python函数、装饰器、迭代器、生成器

5月21日,请假结婚,然后性格惰性来了,不怎么想看视频和笔记,性格中的弱点开始出现,开始做的不错,渐渐开始松懈,直至放弃--- 函数补充进阶 函数对象 函数的嵌套 名称空间与作用域 闭包函数 函数之装饰器 函数之迭代器 函数之生成器 内置函数 一.函数补充进阶 1.函数对象:  函数是第一类对象,即函数可以当作数据传递,它的应用形式也被称为高阶函数,函数的特性如下: a. 可以被引用 1 # def foo(): 2 # print('from foo') 3 # 4 # func = foo

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

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

函数(三) 装饰器函数

装饰器定义    装饰器其实也就是一个函数,一个用来包装函数的函数,返回一个修改之后的函数值,将新的值赋值原来的函数 2. 装饰器语法 1.函数名可以当作函数的参数 1 import time 2 def timmer(func): 3 #函数名可以当做函数的参数 4 def inner(): 5 start = time.time() 6 func() 7 end = time.time() 8 print(end - start) 9 return inner 10 11 def hahah