如何访问在 Python 中的 IF 语句外的 IF 语句内声明的变量

How to access a variable declared inside IF statement outside IF statement in Python

我试图在我的 if 语句之外使用 searchData,这样我就可以在我的查询中使用该变量。但它给了我 UnboundLocalError: local variable 'searchData' referenced before assignment

的错误
@app.route('/ML', methods=['GET', 'POST'])
def index():
  if request.method == "POST":
        request_data = json.loads(request.data)
        searchData = (request_data['content'])
        return jsonify(searchData)
  mycursor = mydb.cursor(dictionary=True)
  query = "SELECT * FROM COMPANY WHERE COMPANY_NAME LIKE %s LIMIT 20;"
  mycursor.execute(query,("%" + searchData + "%",))
  myresult = mycursor.fetchall()

  company = []
  content = {}

  for result in myresult:
     content ={'COMPANY_NAME':result['COMPANY_NAME'],}
     company.append(content)
     content = {}
  return jsonify(company)

我也试过在我的 if 语句上方声明 searchData。它消除了错误,但我的 if 语句没有更改该值。它仍然是我宣布它的方式。我感谢任何人可以提供的帮助。提前谢谢你。

您在 if 语句块中有一个 return searchedInput 语句,删除它可能会解决您的问题。 return 语句将终止您的函数执行。

对于GET方法,searchedInput应该在if语句之前声明。

似乎可以通过对变量进行 global 处理来缓解这个问题。先将 searchData 声明为全局怎么样?

@app.route('/ML', methods=['GET', 'POST'])
def index():
  global searchData
  if request.method == "POST":
        request_data = json.loads(request.data)
        searchData = (request_data['content'])
        return jsonify(searchData)
  mycursor = mydb.cursor(dictionary=True)
  query = "SELECT * FROM COMPANY WHERE COMPANY_NAME LIKE %s LIMIT 20;"
  mycursor.execute(query,("%" + searchData + "%",))
  myresult = mycursor.fetchall()

  company = []
  content = {}

  for result in myresult:
     content ={'COMPANY_NAME':result['COMPANY_NAME'],}
     company.append(content)
     content = {}
  return jsonify(company)