Python装饰器8-装饰器使用外部变量

Python publisher01 27℃

示例

#! -*- coding: utf-8 -*-
from functools import wraps
# 装饰器使用外界的变量或者参数
def decorator_name(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        # can_run = True
        if not can_run:
            print("can run is False")
        else:
            print("can run is True")
            
        return f(*args, **kwargs)
    return decorated
@decorator_name
def func():
    return("Function is running")
# 装饰器的内部实现???这个需了解外部源码
can_run = True
print(func())
can_run = False
print(func())
print(func.__name__)
    

执行结果:

can run is True
Function is running
can run is False
Function is running
func

小结

在装饰器函数中,所有的对象都在运行时开始计算。

转载请注明:Python量化投资 » Python装饰器8-装饰器使用外部变量

喜欢 (0)or分享 (0)