怎么能让这段代码干嘛?

时间:2018-04-30 13:04:20

标签: python python-3.x

有没有办法避免在以下代码中重复:

is_on = True

def func1():
    global is_on
    if is_on:
        pass

def func2():
    global is_on
    if is_on:
        pass

def func3():
    global is_on
    if is_on:
        pass

我正在使用Python 3.6.5

编辑:每个func都有一个代码在被调用时执行(而不是pass),但只有当变量is_on求值为True时,才能更改此变量通过另一个代码,以便当调用这些函数时,它们不会做任何事情。对不起,如果这令人困惑。

1 个答案:

答案 0 :(得分:3)

我猜你想要通过做同样的事情来开始所有的功能,然后做其他的事情,如果是这种情况你应该使用装饰器。

尝试使用装饰器

@some_decorator
def some_func():
    # Do something


def some_decorator(func):
    def new_function(*args):
        if (not is_on):
            return
        func_result = func(*args)
        return func_result
    return new_function

基本上这里发生的是每次调用some_func时它会从装饰器接收一个新的函数对象来测试你的请求,并在'if'语句为真时调用函数。

同样如评论中所述,没有理由使用全局,因为没有其他同名变量。