1、在python中    @函数名 就叫语法糖

2、闭包:

  在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包。   

def line_conf(a, b):def line(x):return a*x + breturn line# 调用函数line_conf(a,b),返回的是函数名line
# 所以相当于两步,首先:调用line_conf(1,1)得到返回值line, 再把line赋值给line1
line1 = line_conf(1, 1) # line1 = line  line1引用了函数名lineprint(id(line1)) #id相同
print(id(line_conf(1,1))# line1(5)就是 line(5)
print(line1(5)) # 结果:6
#里面的函数line()使用了外部函数的变量a,b ,函数line()与a,b形成闭包。完成了y =a*x+b

闭包语法Demo:

"""python3"""
def counter(start=0):def incr():#nonlocal适用于嵌套函数中内部函数修改外部变量的值
        nonlocal start# 改变了start的值start += 1return startreturn incrc1 = counter(5)
print(c1()) #打印结果为6"""python2"""
def counter(start=0):count=[start]def incr():count[0] += 1return count[0]return incrc1 = closeure.counter(5)
print(c1())  # 6

在内部函数中改变闭包中外部函数的参数

3、装饰器代码通式:

  意义:在不改变原代码的情况下,给函数增加一些新的功能

 1 def set_fun(func):
 2
 3     def call_fun(*args,**kwargs):
 4         return func(*args,**kwargs)
 5     return call_fun
 6
 7 @set_fun
 8 def test(a, b):
 9     print(a+b)
10
11 if __name__ == '__main__':
12   test(1, 2) # 调用函数
13         # 运行结果为 3

View Code

转载于:https://www.cnblogs.com/m-j-y/p/8746790.html

从闭包到 语法糖 装饰器相关推荐

  1. python3语法糖------装饰器

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- """装饰器""" ###### 第一波 ## ...

  2. 一篇文章汇总Python装饰器全知识图谱(使用场景,基本用法,参数传递,闭包操作,类装饰器和AOP)

    装饰器,是将Python代码变得低耦合,简洁优美的必经之路,同时也是实现闭包操作,AOP编程的基础.这一篇博客从装饰器的产生原因,基本使用,延伸到参数传递,闭包操作,最后到类装饰器和AOP,希望能用我 ...

  3. ts可展开注释_TS语法之装饰器(注解)

    写在前面的话 本文只讲解 TypeScript 中的装饰器语法(下称注解), 只会告诉你如何编写一个自定义注解,且通过注解简单的修改逻辑,不涉及 反射 或 元编程 等其他更进一步的代码讲解,如果有兴趣 ...

  4. 32.Python面向对象(五)【描述符、运算符底层、装饰器:闭包-闭包参数-内置装饰器-类装饰器】

    目录: 每篇前言: Python面向对象(五) 1.1 描述符 1.2 运算符底层调用的什么? 1.3 装饰器 第一部分--引入门 (1)首先.咱再看遍闭包是啥: (2)然后,咱稍微高级点,看看闭包参 ...

  5. Python之闭包、装饰器及相关习题练习

    学会使用装饰器之前,首先要明白什么是闭包函数 1.闭包 (1)什么是闭包? 闭包:内部函数对外部函数作用域里变量的引用 闭包函数必须满足两个条件:1.函数内部定义的函数 2.包含对外部作用域而非全局作 ...

  6. python基础十 函数(下)匿名函数、高阶函数、闭包、装饰器

    目录 1. 匿名函数(lambda表达式) 2. 高阶函数 3. 函数的嵌套 4. nonlocal 关键字使用 5. 闭包 6. 装饰器 1. 匿名函数(lambda表达式) 简介 用一句话来表达只 ...

  7. SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理

    SIGIA_4P python学习 列表 字典 集合 面对对象编程 闭包 装饰器 函数式编程 作用域 异常处理 本文连接 简介 SIGIA_4P 网址 a. 课程OKR Objectives and ...

  8. python之函数三装饰器

    装饰器形成的过程 装饰器的作用:不想修改函数的调用方式,但是还想在原来的函数前后加功能 原则:开发封闭原则 开发:对扩展是开发的 封闭:对修改是封闭的 装饰器的固定模式 计算运行时间 1 import ...

  9. python装饰器作用-Python装饰器的通俗理解

    在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过思考和查阅才能略有领悟,我希望以下的内容会对你有帮助,我也努力通过通俗的方式使得对Py ...

  10. (一)Python装饰器的通俗理解

    在学习Python的过程中,我相信有很多人和我一样,对Python的装饰器一直觉得很困惑,我也是困惑了好久,并通过思考和查阅才能略有领悟,我希望以下的内容会对你有帮助,我也努力通过通俗的方式使得对Py ...

最新文章

  1. SCCM 2012 R2---配置客户端发现方法和边界组
  2. 找到二叉树中符合搜索二叉树条件的最大拓扑结构
  3. 笔记-项目整体管理-项目工作说明书
  4. 转载:介绍AD另外一种奇葩的多通道复用的方法
  5. 使用vbs脚本检查网站是否使用asp.net
  6. 春运12306的bug
  7. Android FrameWork学习(一)Android 7 0系统源码下载 编译
  8. web系统软件测试功能点,小程序、app、web测试的区别
  9. PetShop之业务逻辑层设计
  10. Android开发笔记(十七)GIF动画的实现GifAnimation
  11. hadoop-集群安装
  12. python数据框添加一列无列名_Pandas只使用列名创建空数据框
  13. Protues仿真 8X8 LED点阵
  14. [Android app] Linux串口驱动配置,可执行程序测试,App串口通信程序
  15. SpringAOP原理分析
  16. 机器视觉——相机标定(摄像机标定)
  17. win11桌面出现ie图标且无法删除,打开是2345主页:解决方法
  18. 基波、谐波、谐波次数
  19. 教你怎样用安全网关消灭蠕虫病毒(转)
  20. 串口之COMMTIMEOUTS结构体详解

热门文章

  1. mac下chrome浏览器设置ajax跨域调试
  2. delphi win64 DEBUG不能进预设断点的问题
  3. Nginx出现403 forbidden (13: Permission denied)报错的四种原因
  4. Python + Selenium WebDriver Api 知识回顾
  5. CC2640 LaunchPad入门试用-第一篇
  6. Hibernate:Hibernate缓存策略详解
  7. Jmeter --- Http Cookie Manager
  8. 如何解决Maple的应用在数学中
  9. Ngnix的日志管理和用定时任务完成日志切割
  10. 《业务需求说明书》检查单 zz