Python 变量已声明但仍然报错
Python variable is declared and still gives error
我想将请求中的数据分配给代码中多处使用的变量 currentKampjson。但是当我尝试将 currentKampjson 分配给任何它被声明为新变量的东西时,这适用于每个变量。
currentKampjson是字典类型变量
currentKampjson = {"info":1, "info2":3}
@app.route("/stream/currentkamp")
def streamCurrentKamp():
return render_template("stream/currentKamp.html", kamp = currentKampjson)
@app.route("/currentKamp/getKamp")
def getCurrentKamp():
return jsonify(currentKamp)
print(currentKampjson)
@app.route("/currentKamp/update", methods=["POST"])
def updateCurrentKamp():
indata = eval(request.data)
currentKampjson = indata
with open("jsonFiles/kamper/currentKamp.json","w") as f:
json.dump(indata, f)
return "SUCCESS"
此代码运行良好,即使我在这里使用 currentKampjson:
@app.route("/currentKamp/update", methods=["POST"])
def updateCurrentKamp():
indata = eval(request.data)
print(currentKampjson)
#currentKampjson = indata
with open("jsonFiles/kamper/currentKamp.json","w") as f:
json.dump(indata, f)
return "SUCCESS"
在当前情况下,您需要对变量使用 global
关键字,但在通常情况下,全局变量不是一个好的做法。
您可以阅读有关范围的更多信息,例如这里:
https://realpython.com/python-scope-legb-rule/
https://matthew-brett.github.io/teaching/global_scope.html
currentKampjson = {"info":1, "info2":3}
@app.route("/stream/currentkamp")
def streamCurrentKamp():
global currentKampjson
return render_template("stream/currentKamp.html", kamp=currentKampjson)
@app.route("/currentKamp/getKamp")
def getCurrentKamp():
return jsonify(currentKamp)
print(currentKampjson)
@app.route("/currentKamp/update", methods=["POST"])
def updateCurrentKamp():
global currentKampjson
indata = eval(request.data)
currentKampjson = indata
with open("jsonFiles/kamper/currentKamp.json", "w") as f:
json.dump(indata, f)
return "SUCCESS"
我想将请求中的数据分配给代码中多处使用的变量 currentKampjson。但是当我尝试将 currentKampjson 分配给任何它被声明为新变量的东西时,这适用于每个变量。
currentKampjson是字典类型变量
currentKampjson = {"info":1, "info2":3}
@app.route("/stream/currentkamp")
def streamCurrentKamp():
return render_template("stream/currentKamp.html", kamp = currentKampjson)
@app.route("/currentKamp/getKamp")
def getCurrentKamp():
return jsonify(currentKamp)
print(currentKampjson)
@app.route("/currentKamp/update", methods=["POST"])
def updateCurrentKamp():
indata = eval(request.data)
currentKampjson = indata
with open("jsonFiles/kamper/currentKamp.json","w") as f:
json.dump(indata, f)
return "SUCCESS"
此代码运行良好,即使我在这里使用 currentKampjson:
@app.route("/currentKamp/update", methods=["POST"])
def updateCurrentKamp():
indata = eval(request.data)
print(currentKampjson)
#currentKampjson = indata
with open("jsonFiles/kamper/currentKamp.json","w") as f:
json.dump(indata, f)
return "SUCCESS"
在当前情况下,您需要对变量使用 global
关键字,但在通常情况下,全局变量不是一个好的做法。
您可以阅读有关范围的更多信息,例如这里:
https://realpython.com/python-scope-legb-rule/ https://matthew-brett.github.io/teaching/global_scope.html
currentKampjson = {"info":1, "info2":3}
@app.route("/stream/currentkamp")
def streamCurrentKamp():
global currentKampjson
return render_template("stream/currentKamp.html", kamp=currentKampjson)
@app.route("/currentKamp/getKamp")
def getCurrentKamp():
return jsonify(currentKamp)
print(currentKampjson)
@app.route("/currentKamp/update", methods=["POST"])
def updateCurrentKamp():
global currentKampjson
indata = eval(request.data)
currentKampjson = indata
with open("jsonFiles/kamper/currentKamp.json", "w") as f:
json.dump(indata, f)
return "SUCCESS"