有没有办法避免在以下代码中重复:
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
时,才能更改此变量通过另一个代码,以便当调用这些函数时,它们不会做任何事情。对不起,如果这令人困惑。
答案 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'语句为真时调用函数。
同样如评论中所述,没有理由使用全局,因为没有其他同名变量。