使文件的每个函数都以对外部函数的相同调用开始



我会给出一些背景,但我认为你不需要了解flask来理解我的问题。

我有一个文件(flask_app.py),我希望所有的函数(除了处理欢迎页面的那个)都从调用函数verify()开始,更准确地说,这四行(但这些行是什么并不重要):

if verify():
    pass
else:
    return redirect("/")

如果verify返回Falseredirect("/")应该将用户重定向到欢迎页面。再说一遍,它不是中央。

然而,在我的代码中复制粘贴这4行代码有点尴尬。我知道我可以把它写成一行,但这仍然在我代码的每个函数中重复一行。所以我的问题是:有没有办法自动做到这一点?是一个神奇的东西,我可以在Python中写在文件的开头,使所有函数(除了一个,但为了公平起见,我可以把它放在另一个文件中)在这个给定的文件中定义,从那4行开始。

这将根据验证的返回值运行myfunc或redirect。注意:要测试这一点,将验证返回值更改为True或False。

def verified():
    print('verified')
    return False
def redirect():
    print('redirect')
def verify(func):
    if verified():
        return func
    else:
        return redirect

@verify
def myfunc():
    print('myfunc')
myfunc()

最新更新