当前位置: 首页 > news >正文

函数装饰器的使用

# -*- coding: utf-8 -*-
'''
使用语法糖@来装饰函数,相当于“myfunc = deco(myfunc)” 
但发现deco函数只在第一次被调用,且myfunc函数在第一次后又被多调用了一次
'''
def deco(func):  
    print("before myfunc() called.")  
    func()  
    print("  after myfunc() called.")  
    return func  
 
@deco  
def myfunc():  
    print(" myfunc() called.")

myfunc()
#myfunc()

#用缓存避免重复运算
from functools import wraps 
def memo(f): 
    cache = {} 
    @wraps(f) #f函数不会被下面的闭包函数所影响
    def  wrap(arg): 
        if arg not in cache: cache[arg] = f(arg) 
        return cache 
    return wrap

@memo 
def fib(i):  
   return i*2

print fib(3)
print fib(5)
print fib(3)

 

转载于:https://www.cnblogs.com/swda/p/7773053.html

相关文章:

  • 广而告之,webcast的新MSN机器人
  • CTF---密码学入门第五题 传统知识+古典密码
  • Day6下午题解1
  • 智能传感器在物联网领域面临的三大挑战
  • Mac OS 安装Wget
  • 【NIPS挑战赛优胜解】用机器学习判断基因变异所属类别
  • 记一次js操作cookie的坑!
  • apache日志轮询cronolog安装配置
  • 网站被用户喜爱的秘密 :挖掘关键词背后的用户需求
  • 关于虚拟目录继承根Web.Config的问题解决办法
  • 初识JSON
  • 初次使用EasyUI框架插件遇到的问题及总结
  • linux命令入门
  • Tomcat/Memcached实现会话保持(SessionServer)
  • CloudStack 4.4+KVM之通过ISO文件创建CentOS虚拟机
  • 【EOS】Cleos基础
  • 【Leetcode】104. 二叉树的最大深度
  • 【干货分享】SpringCloud微服务架构分布式组件如何共享session对象
  • Bootstrap JS插件Alert源码分析
  • eclipse的离线汉化
  • ES6 学习笔记(一)let,const和解构赋值
  • es6--symbol
  • JavaScript创建对象的四种方式
  • php面试题 汇集2
  • React Native移动开发实战-3-实现页面间的数据传递
  • Shadow DOM 内部构造及如何构建独立组件
  • vue-router 实现分析
  • 工作踩坑系列——https访问遇到“已阻止载入混合活动内容”
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 深入浏览器事件循环的本质
  • 通过git安装npm私有模块
  • 想晋级高级工程师只知道表面是不够的!Git内部原理介绍
  • 阿里云重庆大学大数据训练营落地分享
  • 数据库巡检项
  • !!java web学习笔记(一到五)
  • # Panda3d 碰撞检测系统介绍
  • #绘制圆心_R语言——绘制一个诚意满满的圆 祝你2021圆圆满满
  • #中国IT界的第一本漂流日记 传递IT正能量# 【分享得“IT漂友”勋章】
  • (独孤九剑)--文件系统
  • (附源码)ssm教材管理系统 毕业设计 011229
  • (理论篇)httpmoudle和httphandler一览
  • (循环依赖问题)学习spring的第九天
  • (一)u-boot-nand.bin的下载
  • (转)memcache、redis缓存
  • (转)visual stdio 书签功能介绍
  • (转载)Linux网络编程入门
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .Net 代码性能 - (1)
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)
  • .NET学习教程二——.net基础定义+VS常用设置
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @Transactional注解下,循环取序列的值,但得到的值都相同的问题