[编程开发] python @符号

[复制链接]
帝国王子 发表于 2023-11-10 10:41:58|来自:北京 | 显示全部楼层 |阅读模式
python @符号的使用归纳整理一下
一. 函数
python函数修饰符@的作用是为现有函数增加额外的功能,常用于插入日志、性能测试、事务处理等等。
创建函数修饰符的规则:
(1)修饰符是一个函数
(2)修饰符取被修饰函数为参数
(3)修饰符返回一个新函数
(4)修饰符维护被维护函数的签名
我的理解就是把当前函数当做参数传入到修饰函数里执行,然后再修饰函数里做一些操作。
def funcB(funa):
    print("funcb")
    #fun()
    return "test"

@funcB
def funA():
    print("funA")


print(funA)

/*
输出funcb   test
当把#fun() 修改为fun()的时候则为
funcb  funcA test二, @staticmETHod 和  @classmethod
@staticmethod 相当于C++里的静态函数
@classmethod 相当于C++里常用的一个类调用Create来创建自身的用法。
应用场景可以参考这个链接
Python 中的 classmethod 和 staticmethod 有什么具体用途?
三。@property
看这个文章就是了,这个很好理解,就是属性,没啥特别的
Zhihao:python @property的介绍与使用
全部回复6 显示全部楼层
wushuhong 发表于 2023-11-10 10:42:14|来自:北京 | 显示全部楼层
博主,好像有点问题诶,我的编译器说识别不了fun的
汽水猫 发表于 2023-11-10 10:42:41|来自:北京 | 显示全部楼层
把funa改成fun试试
之海 发表于 2023-11-10 10:42:50|来自:北京 | 显示全部楼层
喜欢你的简洁
宾利雅致 发表于 2023-11-10 10:43:50|来自:北京 | 显示全部楼层
装饰器等价于这个:funA=funcB(funA)
zyn373 发表于 2023-11-10 10:44:44|来自:北京 | 显示全部楼层
所以一直调用funcC(funA)
荷尔蒙暴民 发表于 2023-11-10 10:45:34|来自:北京 | 显示全部楼层
第一个例子取消#后会报错

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则