位置: 编程技术 - 正文

python装饰器与递归算法详解

编辑:rootadmin

推荐整理分享python装饰器与递归算法详解,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

1、python装饰器

刚刚接触python的装饰器,简直懵逼了,直接不懂什么意思啊有木有,自己都忘了走了多少遍Debug,查了多少遍资料,猜有点点开始明白了。总结了一下解释得比较好的,通俗易懂的来说明一下:

小P闲来无事,随便翻看自己以前写的一些函数,忽然对一个最最最基础的函数起了兴趣:

此时小P想看看这个函数执行用了多长时间,所以写了几句代码插进去了:

运行之后,完美~~

可是随着继续翻看,小P对越来越多的函数感兴趣了,都想看下他们的运行时间如何,难道要一个一个的去改函数吗?当然不是!我们可以考虑重新定义一个函数timeit,将sum1的引用传递给他,然后在timeit中调用sum1并进行计时,这样,我们就达到了不改动sum1定义的目的,而且,不论小P看了多少个函数,我们都不用去修改函数定义了!

咂一看,没啥问题,可以运行!但是还是修改了一部分代码,把sum1() 改成了timeit(sum1)。这样的话,如果sum1在N处都被调用了,你就不得不去修改这N处的代码。所以,我们就需要杨sum1()具有和timeit(sum1)一样的效果,于是将timeit赋值给sum1。可是timeit是有参数的,所以需要找个方法去统一参数,将timeit(sum1)的返回值(计算运行时间的函数)赋值给sum1。

这样一个简易的装饰器就做好了,我们只需要在定义sum1以后调用sum1之前,加上sum1= timeit(sum1),就可以达到计时的目的,这也就是装饰器的概念,看起来像是sum1被timeit装饰了!Python于是提供了一个语法糖来降低字符输入量。

python装饰器与递归算法详解

重点关注第行的@timeit,在定义上加上这一行与另外写sum1 = timeit(sum1)完全等价。

2、递归算法

递归算法是一种直接或者间接地调用自身算法的过程。在计算机编写程序中,递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。

递归算法解决问题的特点:

(1) 递归就是在过程或函数里调用自身。(2) 在使用递归策略时,必须有一个明确的递归结束条件,称为递归出口。(3) 递归算法解题通常显得很简洁,但递归算法解题的运行效率较低。所以一般不提倡用递归算法设计程序。(4) 在递归调用的过程当中系统为每一层的返回点、局部量等开辟了栈来存储。递归次数过多容易造成栈溢出等。所以一般不提倡用递归算法设计程序。

举个栗子:对一个数字进行除2求值,直到小于等于1时退出并输出结果

结果说明(不return时相当于嵌套循环,一层层进入在一层层退出):

2、递归时return:

结果说明(return时就直接结束本次操作):

用递归实现斐波那契函数

使用Python来编写HTTP服务器的超级指南 首先,到底什么是网络服务器?简而言之,它是在物理服务器上搭建的一个网络连接服务器(networkingserver),永久地等待客户端发送请求。当服务器收

使用Python的PIL模块来进行图片对比 在使用google或者baidu搜图的时候会发现有一个图片颜色选项,感觉非常有意思,有人可能会想这肯定是人为的去划分的,呵呵,有这种可能,但是估计人

讲解Python的Scrapy爬虫框架使用代理进行采集的方法 1.在Scrapy工程下新建middlewares.py#Importingbaselibrarybecausewe'llneeditONLYincaseiftheproxywearegoingtouserequiresauthenticationimportbase#StartyourmiddlewareclassclassProxyMiddleware(obje

标签: python装饰器与递归算法详解

本文链接地址:https://www.jiuchutong.com/biancheng/382368.html 转载请保留说明!

上一篇:Python利用Nagios增加微信报警通知的功能(python import os)

下一篇:使用Python来编写HTTP服务器的超级指南(python编写步骤)

  • 超市的库存商品分类混乱怎么看出来的
  • 进项税额转出会影响利润吗
  • 固定资产升值可以入账吗?
  • 不动产用于集体福利能否抵扣
  • 一般纳税人降为小规模还能升为一般纳税人吗
  • 医院企业所得税怎么征收的
  • 客观原因导致的没见过世面
  • 股东溢价转让股份交易市场会计分录
  • 固定资产按什么价值入账
  • 装卸费和保险费是价外费用吗
  • 没收土地竞买保证金政策法律
  • 工资条迟到扣款
  • 回购库存股所有者权益会发生变化吗
  • 没建账的个体户如何交个人所得税?
  • 差额纳税怎么记账
  • 促销服务费经营范围怎么写
  • 企业改制后职工有几项补偿
  • 高新企业研发人员
  • 应收款收不回账务处理
  • 产业政策鼓励类
  • 企业出售自用车账务处理
  • 金税盘减免税款可以抵扣销项税吗
  • 电脑管家使用教程
  • php开源软件
  • 企业核定征收管理办法
  • PHP:curl_copy_handle()的用法_cURL函数
  • 计提个体户经营所得税
  • 收到税务汇算清缴怎么办
  • 金枝玉叶怎么养才爆盆
  • 结转出租包装物报废的残料价值计入
  • 房企因商品质量问题退租
  • 如何通过手机号码查对方在哪里
  • 本期销售的单位成本怎么算
  • 对公贷款利息支付
  • GPT-4 免费体验方法
  • vi命令模式下的常用命令有哪些?
  • 装订好的凭证可以拆开吗
  • 总公司与分公司合作协议范本
  • 企业有什么项目
  • 免税销售额和本期免税额
  • php怎么连接sqlserver
  • 代开发票相关问答有什么?
  • 非税收入票据能报税吗
  • 补办理营业执照需要什么材料
  • 以前年度损益调整结转到哪里
  • 小规模纳税人减按1%政策
  • 投资性房地产转换计入其他综合收益
  • 跨年度暂估成本高了怎么办
  • 网络销售还可以叫什么
  • 货物出去没有出口报关可以补吗
  • 应付账款会计分录例题
  • 外经证是干什么用的
  • 政府奖励企业如何领取
  • 增值税进项发票抵扣认证流程
  • 预提费用怎么做凭证
  • mysql jsonb
  • solaris ip配置
  • centos7.9关机
  • alp是什么文件
  • win8怎么关闭实时保护
  • win10虚拟机无法安装
  • windows xp 7 10
  • ocxdll.exe - ocxdll是什么进程 有什么用
  • Win8/8.1下通过dism命令解压install.wim文件步骤
  • Win10 Mobile 10586正式版即将向Insider用户推送
  • windows10总是弹出用户账户控制
  • jquery有什么功能
  • 比较漂亮的一个字
  • cocos2d-js-min.js
  • [置顶]津鱼.我爱你
  • unity 优化
  • androidx混淆
  • python 命令
  • 前端闭包函数
  • 国家税务总局公告2023第12号
  • 全国征兵网官网报名
  • 企业税务登记是什么证件
  • 乾升黄酒好吗值得买吗
  • 北京社保登记证怎么办
  • 部落冲突显示此不论描述无效
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设