函数装饰器

菜鸟教程yyds:
https://www.runoob.com/w3cnote/python-func-decorators.html

一。函数装饰器@

在阅读很多python项目时,我们常常会看到@staticmethod,@classmethod 和 @property,这究竟是怎么一回事呢,赶快来跟小编来看一看。
参考:https://www.runoob.com

1.1什么是函数装饰器

首先@XXX是指函数装饰器,简单来说函数装饰器相当于函数的嵌套

@funA
def funB():
    #...

相当于

funA(funB()

即,将函数 B 作为参数传给 A() 函数

1.2内置函数装饰器

1.2.1@staticmethod,
返回函数的静态方法

class A(object):
    @staticmethod
    def a(args1,args2):
    	#...
A.a(args1,args2)

该方法不要求函数a()必须传入参数,例如self,调用a时不需要实例化,也可以实例化后调用。

1.2.2@classmethod
修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。

class A(object):
    a = 1
    def func1(self):  
        print ('func1') 
    @classmethod
    def func2(cls):
        print ('func2')
        print (cls.a)
        cls().func1()   
 
A.func2()              

输出结果为:‘func1’,1,‘func2’

1.2.3@property
使方法可以像类的属性一样访问,不需要加括号

class A(object):
	def __init__(self):
        self.a = 1
    def func1(self):  
        print( self.a)
    @property
    def func2(self):
        print ( self.a)

a = A()
print(a.func1)  #输出1
print(a.func2()) 

二。弱引用weakref模块

python的弱引用指引用一个对象但不增加它的引用计数器,方便Python在对象的引用计数为0或只存在对象的弱引用时将回收这个对象。
https://blog.csdn.net/qdx411324962/article/details/47291265

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python函数装饰器是一种特殊类型的函数,它可以用来修改其他函数的功能。装饰器可以在不修改被装饰函数源代码的情况下,为其添加额外的功能。装饰器本质上是一个返回函数函数,它使用了闭包的概念。 Python提供了@符号作为装饰器的语法糖,使得应用装饰器更加方便。使用装饰器时,可以直接在被装饰函数的定义上方使用@符号加上装饰器函数的名称,就可以将被装饰函数作为参数传递给装饰器函数进行处理。 函数装饰器的应用场景很广泛,它可以用于添加日志记录、性能分析、权限验证、缓存等功能。通过使用装饰器,我们可以将这些功能从原始函数中分离出来,提高代码的可读性和可维护性。 以下是一个简单的示例,演示了如何使用函数装饰器: ``` def decorator(func): def wrapper(*args, **kwargs): # 添加额外的功能 print("装饰器添加的功能") # 调用原始函数 return func(*args, **kwargs) return wrapper @decorator def my_function(): print("原始函数") my_function() ``` 在上面的例子中,我们定义了一个装饰器函数`decorator`,它接受一个函数作为参数,并返回一个新的函数`wrapper`。在`wrapper`函数中,我们可以添加额外的功能,并调用原始函数。通过使用`@decorator`语法,我们将`my_function`函数传递给装饰器进行处理。 当我们调用`my_function()`时,实际上调用的是装饰器返回的`wrapper`函数。在执行`wrapper`函数之前,会先执行装饰器添加的额外功能,然后再调用原始函数。 这就是Python函数装饰器的基本原理和用法。通过使用装饰器,我们可以轻松地修改函数的功能,使代码更加简洁和可重用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值