Python 如何将参数传递给decorator中的函数

Python 如何将参数传递给decorator中的函数,python,flask,decorator,Python,Flask,Decorator,我有一个装饰程序,想让newname传递到protected()并显示,我该怎么做 如果name='Jan'并且在decorator中newname等于Jan hello然后newname可以print(newname)在protected()中使用 我的代码 app.py @app.route('/protected') @lookname def protected(): return jsonify({'message': 'This is only available for

我有一个装饰程序,想让
newname
传递到
protected()
并显示,我该怎么做

如果
name='Jan'
并且在decorator中
newname
等于
Jan hello
然后
newname
可以
print(newname)
protected()中使用

我的代码


app.py

@app.route('/protected')
@lookname
def protected():
    return jsonify({'message': 'This is only available for people with valid tokens!'})
lookname.py

def lookname(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        name = request.cookies.get('name')
        newname = name + ' hello!!!'
        return f(*args, **kwargs)
    return decorated

我想喜欢这个

@app.route('/protected')
@lookname
def protected():
    print(newname)
    return jsonify({'message': 'This is only available for people with valid tokens!'})

您可以使用来携带绑定到请求上下文的任何信息位

from flask import g

def lookname(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        name = request.cookies.get('name')
        g.newname = name + ' hello!!!'
        return f(*args, **kwargs)
    return decorated
然后在受保护的
中:

from flask import g

@app.route('/protected')
@lookname
def protected():
    print(g.newname)
    # ...
您可以使用来携带绑定到请求上下文的任何信息位

from flask import g

def lookname(f):
    @wraps(f)
    def decorated(*args, **kwargs):
        name = request.cookies.get('name')
        g.newname = name + ' hello!!!'
        return f(*args, **kwargs)
    return decorated
然后在受保护的
中:

from flask import g

@app.route('/protected')
@lookname
def protected():
    print(g.newname)
    # ...