装饰器其实也就是一个函数,一个用来包装函数的函数,返回一个修改之后的函数对象。经常被用于有切面需求的场景,较为经典的有插入日志、 性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装 饰器的作用就是为已经存在的对象添加额外的功能。
首先来看看一个小例子:
<code class="python"><span class="k">def</span> <span class="nf">alan</span><span class="p">():</span>
<span class="k">print</span><span class="p">(</span><span class="s">'alan speaking'</span><span class="p">)</span>
</code>首先我们来探讨一下这篇文章所讲的内容Inner Functions - What Are They Good For?(中文版)
使用内层函数的三个好处1.封装
首先Eclipse需要安装Maven的插件, 用MyEclipse安装Maven插件,建出的Maven项目有些问题。一是,发布tomcat的时候resources总是不会被发布到tomcat下;二是,把WEB-INF下的classes改到target下的classes,但是不知道为什么MyEclipse要么仍然在WEB-INF下生成class。要么真不在WEB-INF生成classes了但是发布tomcat的时候,class文件一个都不会给你发布过去,超级郁闷。但是使用Eclipse构建Maven项目后,
0
<code class="python"><span class="k">def</span> <span class="nf">outer</span><span class="p">(</span><span class="n">num1</span><span class="p">):</span>
<span class="k">def</span> <span class="nf">inner_increment</span><span class="p">(</span><span class="n">num1</span><span class="p">):</span> <span class="c"># hidden from outer code</span>
<span class="k">return</span> <span class="n">num1</span> <span class="o">+</span> <span class="mi">1</span>
<span class="n">num2</span> <span class="o">=</span> <span class="n">inner_increment</span><span class="p">(</span><span class="n">num1</span><span class="p">)</span>
<span class="k">print</span><span class="p">(</span><span class="n">num1</span><span class="p">,</span> <span class="n">num2</span><span class="p">)</span>
<span class="n">inner_increment</span><span class="p">(</span><span class="mi">10</span><span class="p">)</span> <span class="err">#不能正确运行</span>
<span class="c"># outer(10) #可以正常运行</span>
</code><code class="text">def addOne(func): def wraper(*args,**kwargs): saySmthing = "Result :" return saySmthing +" "+ str(func(*args,**kwargs)) return wraper @addOne def func(a,b): return a+b print(func(10,20)) </code>
装饰器是在Python 2.4中加入的,它使得函数和方法封装(接收一个函数并返回增强版本的一个函数)更容易阅读和理解。原始的使用场景是可以将方法在定义的首部将其定义为类的方法或静态方法。常见的装饰器模式包括:参数检查;缓存;代理;上下文提供者。
python怎么学习?python怎么入门?python在哪学?python怎么学才快?不用担心,这里为大家提供了python速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号