第33天pytho学习装饰器:高级函数部分演示

#迭代器:把列表变为迭代器# l=[1,3]# l1=iter(l)#转换成迭代器# print(l1)# print(next(l1))#——————转换成迭代器把第一个值取出来

#装饰器:本质就是函数;功能:为其他函数添加附加功能#原则:1、不修改被修饰函数的源代码  2、不修改被修饰函数的调用方式

#统计函数的时间# import time#添加个时间模块# def test(l):#     start_time=time.time()#开始时间#     res=0#     for i in l:#         time.sleep(0.1)#让函数睡0.1秒#         res+=i#     stop_time=time.time()#停止时间#     print("运行时间函数时间 %s" %(stop_time-start_time))#     return  res# print(test(range(100)))

#装饰器的好处:就是解决已经在运行的函数添加功能,不可能把之前的函数拿出从新搞,避免其他地方在应用

#演示的装饰器-------------------运行有问题等修改import time#添加个时间模块#使用装饰器来修饰下面求值的函数# def time(fun):#     def wapper(*args,**kwargs):#         start_time=time.time()#         res=fun(*args,**kwargs)#         stop_time=time.time()#         print("函数运行时间 %s" %(stop_time-start_time))#         return  res#     return wapper## #函数求职# @time# def test(l):#     res=0#     for i in l:#         time.sleep(0.1)#让函数睡0.1秒#         res+=i#     return  res# print(test(range(20)))

#装饰器知识储备:装饰器=高级函数+函数嵌套+闭包

#高级函数:1、函数接收的参数是一个函数名;2、函数的返回值是一个函数。只要满足1或2任意一个条件都可以称之为高级函数

# def foo():#     print("您好foo")## #这个是高级函数# def  test(fun):#     print(fun)#     fun()#执行运行结果# test(foo)

# #求foo的运行时间,但是以下方法实现了没有修改原函数就实现求值,但是修改了调用函数的方式# import  time# def foo():#     time.sleep(0.1)#     print("您好foo")## #这个是高级函数,参数是函数名的方式# def  test(fun):#     print(fun)#     start_time=time.time()#     fun()#执行运行结果#     stop_time=time.time()#     print("foo运行时间 %s" %(stop_time-start_time))# test(foo)#正确的方式是直接foo()执行,但是我这使用了test(foo),修改了函数的调用方式

#使用高级函数:返回值和参数都是函数# def foo():#     print("函数 foo")## def test(fun):#     return fun## res=test(foo)#拿到地址# res()#直接运行

# #实现不改调用函数方式# def foo():#     print("函数 foo")## def test(fun):#     return fun# foo=test(foo)#在赋值给foo# foo()#调用方式还是foo()

#统计foo运行时间,不修改foo原代码,不修改foo的调用方式

#多运行一次了,失败的列子# import  time# def foo():#     time.sleep(3)#     print("来自 foo")# # def time1(fun):#     start_time=time.time()#     fun()#执行运行结果#     stop_time=time.time()#     print("foo运行时间 %s" %(stop_time-start_time))#     return fun# # foo=time1(foo)# foo()#结果:来自 foo  foo运行时间 3.000626564025879   来自 foo

#总结:上面应用了高级函数,但是实现不了装饰器

#总结:1、使用传入参数是函数时,没有修改原来函数,但是修改了调用方式。#      2、使用返回值是函数时,不修改调用方式

原文地址:https://www.cnblogs.com/jianchixuexu/p/11605370.html

时间: 2024-10-31 08:58:29

第33天pytho学习装饰器:高级函数部分演示的相关文章

python之循序渐进学习装饰器

python装饰器的定义:在代码运行期间在不改变原函数定义的基础上,动态给该函数增加功能的方式称之为装饰器(Decorator) 装饰器的优点和用途: 1. 抽离出大量函数中与函数功能本身无关的的雷同代码并继续重用.2. 使用装饰器可以将函数"修饰"为完全不同的行为,可以有效的将业务逻辑正交分解,如用于将权限与身份验证从业务中独立出来.3. 如果一个函数需要一个功能,且这个功能可以被使用在很多函数上,或是函数并不是自己实现,那可以写个装饰器来实现这些功能.概况来说,装饰器的作用就是为已

Python学习---装饰器/迭代器/生成器的学习【all】

Python学习---装饰器的学习1210 Python学习---生成器的学习1210 Python学习---迭代器学习1210 原文地址:https://www.cnblogs.com/ftl1012/p/9484145.html

python学习-装饰器

参考: http://www.wklken.me/posts/2013/07/19/python-translate-decorator.html http://www.cnblogs.com/wupeiqi/articles/4980620.html 一.装饰器必备知识 1.函数可以被赋值给一个变量 def show(msg): print(msg) # 调用 show 函数 show("这是调用 show() 的输出") # 将函数 show 赋值给 foo foo = show

关于Python装饰器内层函数为什么要return目标函数的一些个人见解

https://blog.csdn.net/try_test_python/article/details/80802199 前几天在学装饰器的时候,关于装饰器内层函数调用目标函数时是否return目标函数的调用产生了一点迷惑,事实是当被装饰的目标函数有返回值的时候,装饰器内层函数也必须返回该目标函数的调用. 我们都知道不带括号的函数名指向是函数代码所在的内存地址,加上括号之后就变成了一个执行命令,那么这个'func( )'到底有什么意义呢? 上面这张图可以大概看出点东西,单独的函数名是 fun

diango中让装了装饰器的函数的名字不是inner,而是原来的名字

让装了装饰器的函数的名字不是inner,而是原来的名字 from functools import wraps def wrapper(func): @wraps(func) # 复制了原来函数的名字和注释 def inner(request,*arg,**kwargs): # 之前 ret = func(request,*arg,**kwargs) # 之后 return ret return inner @wrapper # f1 = wrapper(f1) def f1(request):

装饰器工厂函数

""" 需求:参数传入0 希望时间用整数显示,参数传入1 用浮点数显示 """ import time def get_run_time(flag): """装饰器工厂函数""" def get_time(func): """装饰器函数:对函数运行时间进行统计""" print('in get_time') def inner(

python学习--装饰器、生成器、内置函数、json

这周学习了装饰器和生成器,写下博客,记录一下装饰器和生成器相关的内容. 一.装饰器 装饰器,这个器就是函数的意思,连起来,就是装饰函数,装饰器本身也是一个函数,它的作用是用来给其他函数添加新功能,比如说,我以前写了很多代码,系统已经上线了,但是性能比较不好,现在想把程序里面每个函数都加一个功能,用来统计每个函数的运行时间是多少,找出来运行比较慢的函数,来优化代码,就需要添加一个新的功能,来统计程序的运行时间,那这样的话,就得修改每个函数了,需要改代码,但是代码特别多,改完了公司倒闭了,这时候装饰

python学习——装饰器函数

一.装饰器函数的作用是什么 答:装饰器函数是在不修改原函数及其调用方式的情况下对原函数功能进行扩展 对于搞python开发的人来说,函数占据了至关重要的地位.都说学好函数你就可以去找工作了,好了,假如你已经在某个公司上班了,想到马上就要过年了,那过年就意味着你可以向老板要年终奖金了,那凭什么老板要给你年终奖呢,你又能得到多少年终奖金呢.老板是这样说的,你给我至少写1000行代码,我来看一下你代码的执行时间,根据你的执行时间来评你的年终奖.好了,你知道既然要计算时间,学过函数的你就来实现一个计算函

Python学习---装饰器的学习1210

装饰器的基础 学习前提: 作用域 + 函数的理解 + 闭包  [学习,理解] 代码编写原则: 对修改开放对扩展开放 装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象. 装饰器的应用:经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理.缓存.权限校验等应用场景.装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量与函数功能本身无关的雷同代码并继续重用. 装饰器作用:装饰器感觉就像是内部函数的