装饰器引入 | Python从入门到精通:高阶篇之十七

简介: 我们希望在不修改原函数的情况下,来对函数进行扩展。只需要根据现有的函数,来创建一个新的函数。

查看上一节:闭包函数

装饰器引入

# 创建几个函数

def add(a , b):
    '''
        求任意两个数的和
    '''
    r = a + b
    return r


def mul(a , b):
    '''
        求任意两个数的积
    '''
    r = a * b
    return r    

# 希望函数可以在计算前,打印开始计算,计算结束后打印计算完毕
# 我们可以直接通过修改函数中的代码来完成这个需求,但是会产生以下一些问题
#   ① 如果要修改的函数过多,修改起来会比较麻烦
#   ② 并且不方便后期的维护
#   ③ 并且这样做会违反开闭原则(OCP)
# OCP:程序的设计,要求开放对程序的扩展,要关闭对程序的修改

r = add(123,456)
print(r)

我们希望在不修改原函数的情况下,来对函数进行扩展。只需要根据现有的函数,来创建一个新的函数

def fn():
    print('我是fn函数....')

def fn2():
    print('函数开始执行~~~')
    fn()
    print('函数执行结束~~~')

fn2()    

执行结果为:
image.png
此时就达到了对fn函数的一个扩展。

对第一个加法示例进行扩展:

def new_add(a,b):
    print('计算开始~~~')
    r = add(a,b)
    print('计算结束~~~')
    return r

r = new_add(111,222)    
print(r)

执行结果为:
image.png
上边的方式,已经可以在不修改源代码的情况下对函数进行扩展了。

但是,这种方式要求我们每扩展一个函数就要手动创建一个新的函数,实在是太麻烦了。

为了解决这个问题,我们创建一个函数,让这个函数可以自动的帮助我们生产函数。

点击查看配套视频教程

更多内容请订阅python学习站官方技术圈!

相关文章
|
7天前
|
数据采集 存储 JSON
Python爬虫开发:BeautifulSoup、Scrapy入门
在现代网络开发中,网络爬虫是一个非常重要的工具。它可以自动化地从网页中提取数据,并且可以用于各种用途,如数据收集、信息聚合和内容监控等。在Python中,有多个库可以用于爬虫开发,其中BeautifulSoup和Scrapy是两个非常流行的选择。本篇文章将详细介绍这两个库,并提供一个综合详细的例子,展示如何使用它们来进行网页数据爬取。
|
15天前
|
存储 JSON 安全
从入门到精通:Python中的OAuth与JWT,打造无懈可击的认证体系🔒
【8月更文挑战第4天】构建现代Web和移动应用时,用户认证与授权至关重要。Python集成OAuth和JWT技术,能轻松实现安全认证。本文从OAuth基础入手,介绍如何使用`requests-oauthlib`库简化流程,再到JWT进阶应用,利用`PyJWT`库生成及验证令牌。最后,探讨如何结合两者,创建无缝认证体验。通过代码示例,由浅入深地引导读者掌握构建坚固应用认证体系的方法。
35 2
|
16天前
|
数据安全/隐私保护 开发者 Python
深入浅出Python装饰器
【8月更文挑战第4天】装饰器在Python中是一个既强大又神秘的功能,它允许开发者在不修改原有函数代码的情况下增加额外的功能。本文旨在通过浅显易懂的语言和实例,带领读者一步步揭开装饰器的神秘面纱,理解其背后的原理,并学会如何在实际开发中应用它们。
Python 装饰器“高级”使用
本文聚焦两个有意思的点 1. 无参和有参装饰器。 @deco vs @deco(arg1,arg2)。 2. 多层装饰器场景。
|
4天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。
|
5天前
|
数据采集 数据可视化 算法
GitHub星标68K!Python数据分析入门手册带你从数据获取到可视化
Python作为一门优秀的编程语言,近年来受到很多编程爱好者的青睐。一是因为Python本身具有简捷优美、易学易用的特点;二是由于互联网的飞速发展,我们正迎来大数据的时代,而Python 无论是在数据的采集与处理方面,还是在数据分析与可视化方面都有独特的优势。我们可以利用 Python 便捷地开展与数据相关的项目,以很低的学习成本快速完成项目的研究。 今天给小伙伴们分享的这份Python数据分析入门手册本着实用性的目的,着眼于整个数据分析的流程,介绍了从数据采集到可视化的大致流程。
|
14天前
|
机器学习/深度学习 开发者 Python
Python 与 R 在机器学习入门中的学习曲线差异
【8月更文第6天】在机器学习领域,Python 和 R 是两种非常流行的编程语言。Python 以其简洁的语法和广泛的社区支持著称,而 R 则以其强大的统计功能和数据分析能力受到青睐。本文将探讨这两种语言在机器学习入门阶段的学习曲线差异,并通过构建一个简单的线性回归模型来比较它们的体验。
37 7
|
16天前
|
Python
探索Python中的装饰器:从入门到实践
【8月更文挑战第4天】在Python的世界中,装饰器是一把双刃剑,它既能美化代码,又能提升效率。本文将带你一探究竟,通过实例学习如何定义、使用以及深入理解装饰器背后的原理。我们将一起揭开这层神秘的面纱,让装饰器成为你编程工具箱中的又一利器。
31 9
|
13天前
|
测试技术 开发者 Python
翻天覆地!Python装饰器,如何让代码起死回生?
【8月更文挑战第6天】在软件开发领域,提高代码的质量始终是核心目标之一。Python作为一种功能丰富的高级语言,提供了多种手段来实现这一目标,装饰器便是其中之一。本文通过问答形式,深入解析了装饰器的概念、基本语法及其实现机制。装饰器允许在不改变原函数的基础上添加新功能,其基本语法为使用`@`符号后跟装饰器函数名。此外,还探讨了装饰器如何通过增强代码的模块性和灵活性来提升整体质量,并举例说明了装饰器在类方法中的应用。总之,装饰器是一种强大的工具,可以帮助开发者以更简洁、模块化的方式扩展功能,同时保持代码的整洁和可维护性。
25 3
|
13天前
|
机器学习/深度学习 数据采集 数据可视化
使用Python进行数据科学入门指南
【8月更文挑战第6天】使用Python进行数据科学是一条充满挑战和机遇的道路。本文提供了入门指南,帮助您快速上手Python数据科学。通过实践项目和资源推荐,您将能够深入学习Python数据科学,成为一名合格的数据科学家。