装饰器实际上只是功能,而功能只是对象.

线

@make_blink

def hello_world():

# ...

基本上与

def hello_world():

# ...

hello_world = make_blink(hello_world)

除了函数对象永远不会首先分配给hello_world(它在堆栈上,要传递给装饰器).

因此,您从make_blink()返回的所有内容都将分配回hello_world.那可以是一个功能对象,但也可以是完全不同的东西.

因此,当您使用return装饰器时,您告诉Python将hello_world设置为嵌套的函数对象.当使用return decorator()时,您告诉Python使用decorator()函数的结果.在这里,这是一个字符串值.就像您这样做:

def hello_world():

"""Original function! """

return "Hello, World!"

hello_world = "" + hello_world() + ""

对于这个特定示例来说,这很好,因为hello_world()函数的主体每次都只会返回相同的字符串.

但是,如果您将原始的hello_world()函数主体更改为每次调用都返回不同的内容,该怎么办?如果您有:

import random

@make_blink

def random_greeting():

return 'Hello ' + random.choice('DonAr', 'Martijn Pieters', 'Guido van Rossum') + '!'

现在,您从make_blink()调用返回的内容将大为不同!对于模块的顶层,装饰器在导入时仅执行一次.如果使用return decorator(),则只运行一次random.choice(),并且已将random_greeting的值固定为单个静态字符串结果.

一般而言,装饰器应再次返回可调用对象.那可以是原始函数(装饰器只是在其中更新某种注册),包装函数(在调用原始函数之前或之后做额外的事情)甚至是完全不同的东西.但这并不是在任何地方都是一成不变的,而且解释器也不管.

装饰器只是在程序中使用的可重用工具.如果您对返回原始函数结果的装饰器有特定的用途,则可以随意这样做.

python解释器是什么-python-解释器在这里做什么相关推荐

  1. python详细安装教程 path-Python解释器安装教程以及环境变量配置

    Python解释器安装 1.打开Python官网 www.python.org 2. 鼠标放在 Downloads 上,并选择相对应的系统 3.寻找你想要的版本,以3.7.3版本为例 3.1 64位系 ...

  2. python各个解释器的用途-python的解释器是什么?

    python解释器是解释python脚本执行的程序.编写python代码保存后,我们会得到一个以.py为扩展名的文本文件.要运行此文件,就需要python解释器去执行.py文件. python解释器种 ...

  3. python各个解释器的用途-【Python面试】 说说Python解释器种类以及特点?

    最近公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开 ...

  4. python解释器是什么-python的解释器是什么?

    python解释器是解释python脚本执行的程序,当开发者在编写python代码保存后,就会得到一个以".py"为扩展名的文本文件,若要运行此文件,就需要python解释器去执行 ...

  5. python解释器运行代码-Python如何运行程序

    人生苦短,我用Python. 作为一个开发人员,如何写代码是必须要知道的,代码如何运行也是有必要了解的.通过了解代码如何运行,可指导我们写出效率更高的代码.下午看了<Python学习手册> ...

  6. python各个解释器的用途-常用的五种Python解释器|老男孩网络Python学习课程

    Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释 ...

  7. python各个解释器的用途-Python解释器有哪些?Python解释器种类

    Python是一门解释器语言,代码想运行,必须通过解释器执行,Python存在多种解释器,分别基于不同语言开发,每个解释器有不同的特点,但都能正常运行Python代码,以下是常用的五种Python解释 ...

  8. 让python执行完停在解释器窗口

    让python执行完停在解释器窗口 文章目录: 一.windows让批处理文件运行完成后不关闭窗口 二.让python执行完停在解释器窗口 我是在windows里写入的一个执行python脚本的批处理 ...

  9. python实现解释器_Python设计模式之解释器模式

    解释器模式 对每个应用来说,至少有以下两种不同的用户分类. 基本用户:这类用户只希望能够凭直觉使用应用.他们不喜欢花太多时间配置或学习应用的内部.对他们来说,基本的用法就足够了. 高级用户:这些用户, ...

  10. python 解释器下载_PyPy Python

    PyPy Python是专为python打造的解释器,理论上它比phthon的执行速度更快,它采用先进的jit技术,能够大大地提高代码的执行效率,同时PyPy Python还拥有强大和灵活的特点,小编 ...

最新文章

  1. html标签一对一绑定的组件,一种原生组件替换HTML标签的轻量级方法尝试
  2. C语言 变量 函数 (类型、作用域、生命周期、存储位置)
  3. dropout比率最好的设置为0.5,因为随机生成的网络结构最多
  4. 西门子电机选型参考一
  5. uniapp 小程序列表懒加载
  6. 注解和反射复习——B站
  7. 网络安全策略管理架构
  8. Low-Code is Low—— 低代码的使用
  9. Linux 进程通信 -- 管道
  10. 移动端超高品质的Axure UI设计/交互设计组件库,几乎涵盖了所有的组件
  11. 《途客圈创业记:不疯魔,不成活》一一1.1 途我睿的由来
  12. [原]【Visual C++】游戏开发笔记十六 讲解一个完整的回合制游戏demo
  13. pb对Web Service的操作可使用两种方式实现
  14. html制作动态八卦图源码
  15. zeit_Zeit风格的Vue实现
  16. android自动发送dtmf,Android通话中发送DTMF信号
  17. 使用server酱进行服务器端口异常报警
  18. helm3 chart repo 私有仓库
  19. java 二叉树 红黑树_常见数据结构(二)-树(二叉树,红黑树,B树)
  20. 电子英汉词典附带背单词功能C语言程序设计,附录完整代码

热门文章

  1. 8-7-Exercise
  2. [Ubuntu]更改所有子文件和子目录所有者权限
  3. 【bzoj3601】一个人的数论 莫比乌斯反演+莫比乌斯函数性质+高斯消元
  4. django使用ckeditor富文本编辑器-转
  5. .net生成图片验证码
  6. 输出主键的值 output inserted.id
  7. 适合ipad的python编程软件-如何用iPad运行Python代码?
  8. ipython安装教程-ipython notebook教程
  9. python教学视频下载-Python机器学习入门教程全套视频下载【传智播客】
  10. python绘制笑脸-用python绘图