欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > python >内容正文

python

python 函数装饰器_python函数装饰器的用法

发布时间:2025/4/16 python 39 豆豆
生活随笔 收集整理的这篇文章主要介绍了 python 函数装饰器_python函数装饰器的用法 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

函数装饰器:

开闭原则:在面向对象编程领域中,开闭原则规定“软件中的对象(类,模块,函数等等)应该对于扩展是开放的,

但是对于修改是封闭的”,这意味着一个实体是允许在不改变它的源代码的前提下变更它的行为。

三要素:

1、不能更改原函数

2、不能改变被装饰函数的调用方式

3、满足1、2的情况下给程序增加功能 (这个函数不能动)

定义公式:

常用场景:它经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等场景。

多个装饰器同时修饰函数:装饰器执行顺序:从最后一个装饰器开始执行到第一个装饰器

"""

# 简单的装饰器

# def fn(f1):

# def fc():

# print("这里开始对f1函数权限进行验证")

# f1()

# print("f1函数已经处理完毕了")

# return fc

#

# def f1():

# print("这里f1函数的功能展示")

#

# t = fn(f1)

# t()

# 为了可视化和模块化,对上面的同一个功能的高级装饰函数进行统一标识,达到更好的效果

# @fn #这个@fn标识符效果等同于f1=fn(f1)

# 注意这个时候函数不用再这样fn(f1)()的调用了,而是直接使用f1()即可达到fn(f1)()的效果了

# 因为@fn的效果等同于f1=fn(f1),所以直接调用f1()相当于实现了fn(f1)(),进而达到原来的效果。

# def fn(f1):

# def fc():

# print("这里开始对f1函数权限进行验证")

# f1()

# print("f1函数已经处理完毕了")

# return fc

#

# @fn

# def f1():

# print("这里f1函数的功能展示")

#

# f1()

## 多个装饰器装饰被装饰函数的执行顺序

# def makeBold(fun):

# print('----a----')

# def inner():

# print('----1----')

# return '' + fun() + ''

# return inner

#

# def makeItalic(fun):

# print('----b----')

# def inner():

# print('----2----')

# return '' + fun() + ''

# return inner

#

# @makeBold

# @makeItalic

# def test():

# print('----c----')

# print('----3----')

# return 'hello python decorator'

#

# res= test()

# print(res)

## 装饰器传参

# def w_say(fun):

# """

# 如果原函数有参数,那闭包函数必须保持参数个数一致,并且将参数传递给原方法

# 如果被装饰的函数有行参,那么闭包函数必须有参数

# """

# def inner(name):

# print('say inner called')

# fun(name)

# return inner

#

# @w_say

# def hello(name):

# print('hello ' + name)

#

# hello('晓鑫')

# 多个函数使用装饰器 传入多个参数

# def w_add(func):

# def inner(*args, **kwargs):

# print('add inner called')

# func(*args, **kwargs)

# return inner

#

# @w_add

# def add(a, b):

# print('%d + %d = %d' % (a, b, a + b))

#

# @w_add

# def add2(a, b, c):

# print('%d + %d + %d = %d' % (a, b, c, a + b + c))

#

# add(2, 4)

# add2(2, 4, 6)

《新程序员》:云原生和全面数字化实践50位技术专家共同创作,文字、视频、音频交互阅读

总结

以上是生活随笔为你收集整理的python 函数装饰器_python函数装饰器的用法的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。