首页 > 编程语言 >Python闭包和装饰器原理

Python闭包和装饰器原理

时间:2024-05-27 14:23:08浏览次数:24  
标签:闭包 函数 Python hello decoration inner new 装饰

# Python闭包和装饰器

############# 闭包 ##############
'''
    1. 一个外层函数,内嵌一个内层函数;
    2. 内层函数使用外层函数的参数;
    3. 外层函数将内层函数作为返回值返回
'''

# 外层函数
def outer(msg):
    # 内层函数
    def inner():
        # 内层函数使用外层函数的参数
        print(msg)
    # 将内层函数作为返回值返回
    return inner

inner = outer('hello world')
inner()    # 结果打印:hello world

# 在这个过程中,调用完outer()之后,将变量msg保留了下来,在inner()调用时可以继续使用


############# 装饰器 ##############
'''
    1. 装饰器的本质就是闭包,只不过外层函数的参数就是 “要装饰的那个函数”;
'''

# 定义一个装饰器decoration
def decoration(func):

    def inner():
        # 在前面添加新的功能
        print('before new function!')

        # 调用原本的函数 
        func()

        # 在后面添加新的功能
        print('after new function!')

    return inner

# 定义函数hello
def hello():
    print('hello')

# 用装饰器decoration装饰函数hello
hello = decoration(hello) 
hello()
'''
    结果打印:
    before new function!
    hello
    after new function!
'''

# 用装饰器decoration来装饰函数的另一种写法,效果是一样的
@decoration
def hello_2():
    print('hello_2')

hello_2()
'''
    结果打印:
    before new function!
    hello_2
    after new function!
'''

  

标签:闭包,函数,Python,hello,decoration,inner,new,装饰
From: https://www.cnblogs.com/zhangyh-blog/p/18215399

相关文章

  • Python编程入门:从零开始掌握基础
    Python编程入门:从零开始掌握基础Python是一门简单易学但功能强大的编程语言。它广泛应用于数据科学、机器学习、web开发、自动化任务等领域。本系列文章将带你从零开始学习Python,逐步掌握这门语言的基础知识。本文是系列的第一篇,涵盖Python的基本语法、变量和数据类型等内......
  • Python基础-容器数据
    一、容器类型介绍容器就是存放数据的python中的容器数据有多种形式,每种形式有自己的存储格式,数据存储特性不一样字符串str就是容器存放一个一个字母格式:单引号'数据',双引号"数据",三个引号"""数据"""列表list格式:[数据1,数据2,数据3.....]元祖tuple......
  • Python 问题汇总
    一.Python环境问题使用pytest在terminal中执行脚本调用python3.9,而使用pycharm的virtualenv执行脚本调用的是python3.10,由于环境不一致,因此进行配置;1.安装pyenv进行版本管理,当前安装的是python3.9.19,目录为: /usr/local/Cellar/[email protected]/3.9.19创建软链:ln-s......
  • 基于Python LSTM的多维数据预测
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在现实世界的数据分析中,我们经常需要处理多维数据(multi-variatedata),这些数据往往具有复杂的时空关系和时......
  • 深度学习之基于Python+OpenCV+Tensorflow+Keras实时口罩检测系统
    欢迎大家点赞、收藏、关注、评论啦,由于篇幅有限,只展示了部分核心代码。文章目录一项目简介二、功能三、系统四.总结一项目简介  一、项目背景与意义在全球公共卫生背景下,口罩成为了重要的防护工具。特别是在疫情流行期间,确保公共场所的人们佩戴口罩对于防......
  • Python网页解析
    课前案例如果不存在imgs目录,则需要手动创建它,或者通过代码创建。可以使用 Path.mkdir() 方法创建目录。例如:imgs_dir=Path("imgs")imgs_dir.mkdir(parents=True,exist_ok=True)记得下载lxml软件包,可以在终端用指令下载:pipinstall-ihttps://mirrors.aliyun.com/p......
  • RabbitMQ(python)
     一、认识MQMQ全称为MessageQueue消息队列(MQ)是一种应用程序对应用程序的通信方法。MQ是消费-生产者模型的一个典型的代表,一端往消息队列中不断写入消息,而另一端则可以读取队列中的消息。这样发布者和使用者都不用知道对方的存在。生产者消费者模式是通过一个容器来解决生......
  • Python基于微信小程序的农产品溯源平台论文(1)
    目录1绪论41.1项目研究的背景41.2开发意义41.3项目研究内容与结构42开发技术介绍52.1B/S架构52.2小程序平台52.3python语言简介52.4MySQL介绍62.5MySQL环境配置82.6Django框架83系统分析93.1可行性分析93.1.1技术可行性93.1.2经济可行性......
  • python 批导
    安装官网https://www.python.org/ 安装教程https://blog.csdn.net/weixin_42212924/article/details/124979123 https://www.cnblogs.com/missjade/p/12992038.htmlPip源设置(使用清华源) 1、临时使用1pipinstall-ihttps://pypi.tuna.tsinghua.edu.cn/simpleso......
  • 解读注意力机制原理,教你使用Python实现深度学习模型
    本文分享自华为云社区《使用Python实现深度学习模型:注意力机制(Attention)》,作者:Echo_Wish。在深度学习的世界里,注意力机制(AttentionMechanism)是一种强大的技术,被广泛应用于自然语言处理(NLP)和计算机视觉(CV)领域。它可以帮助模型在处理复杂任务时更加关注重要信息,从而提高性能。在本......