打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Python之装饰器

```python3

def fn(old):

def new_fun(*args, **kwargs):

print("开始装饰")

result = old(*args, **kwargs)

print("装饰结束")

return result

return new_fun

@fn

def say_hello():

    print("大家好~~~")

say_hello()

```

窗口程序中的应用

```python3

import traceback

def run_with_exc(f):

    """窗口运行出现错误时,用messagebox把错误信息显示出来"""

    def call(window, *args, **kwargs):

        try:

            return f(window, *args, **kwargs)

        except Exception:

            exc_info = traceback.format_exc()

            QMessageBox.about(window, '错误信息', exc_info)

    return call

class GomokuWindow(QMainWindow):

    @run_with_exc

    def paintEvent(self, e):

```

带参数的三层装饰器

```python3

def timmer_out(flag):

    def timmer(func):

        def inner(*args, **kwargs):

            if flag:

                start = time.time()

                ret = func(*args, **kwargs)

                end = time.time()

                print(end-start)

                return ret

            else:

                ret = func(*args, **kwargs)

                return ret

    return inner

return timmer

```

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
12步轻松搞定python装饰器
《源码探秘 CPython》64. 装饰器是怎么实现的?
python基础篇大合集,进程、装饰器、列表详解篇!
一位Python初学者的独白:Python小白眼中的装饰器
Python Decorator 基础
装饰器_装饰器flage = true
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服