SyntaxError: 在 Python/Flask 代码中的全局声明之前使用了名称 's'

Rep*_*ter 1 python amazon-ec2 amazon-web-services flask python-3.x

我的代码的目标是将其放入两个 EC2 实例中,然后连接到负载均衡器以在两个实例之间分配请求。

这是我的代码,我首先尝试在本地测试它,然后在 EC2 实例中测试它,然后最终使用负载均衡器测试所有内容。

from flask import Flask,request,session
##global s
s = 0
app = Flask(__name__)

@app.route("/", methods=["GET","POST"])
def disp():
    if request.method == "GET":
        global s
        s = 0 
        return str(s)
    if request.method == "POST":
        global s
        s = request.json["num"]
        return str(s)

if __name__ =="__main__":
    app.run()
    ##app.run('0.0.0.0', port=80)
Run Code Online (Sandbox Code Playgroud)

当我在本地运行时返回的错误是 SyntaxError: Name 's' is used before global statements。我尝试删除导入行后的 s=0 但错误仍然存​​在。

h4z*_*4z3 5

global s你的函数中有两个disp,第二个表示出了问题,因为它s = 0之前看到过。

global理想情况下,在声明函数之后放置定义:

from flask import Flask,request,session

s = 0
app = Flask(__name__)

@app.route("/", methods=["GET","POST"])
def disp():
    global s
    if request.method == "GET":
        s = 0 
        return str(s)
    elif request.method == "POST":
        s = request.json["num"]
        return str(s)

if __name__ =="__main__":
    app.run()
    ##app.run('0.0.0.0', port=80)
Run Code Online (Sandbox Code Playgroud)

也将第二个 if 改为 elif。