【问题标题】:I keep getting this error local variable 'url' referenced before assignment我在分配之前不断收到此错误局部变量“url”的引用
【发布时间】:2019-02-16 04:50:47
【问题描述】:

它不运行循环

修改了变量url名称还是不行

@

app.route("/processbuy", methods=["POST"])
def processbuy():
 if request.method == "POST":
        index2 = request.form['index2']
        querystring = {"api_key":"NN2T8jrqC6UH5inDezHh"}
        payload = ""
        headers = {
            'cache-control': "no-cache",
            'Postman-Token': "d2cd69a4-e6d4-466c-88b3-0a3987b1cd7d"
        }                              
        print("dsad")
        if index2 == "Stock Market Index at Exchange: NYSE":
                url = "https://www.quandl.com/api/v3/datasets/WFE/INDEXES_NYSE.json"
                response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
                indiceData = json.loads(response.text)
                latestIndicePrices = indiceData["dataset"]["data"][0]
                indexValue = float(latestIndicePrices[5])

        else: 
                if index2 == "NASDAQ-100 Target 25 Notional Net Return Index(XNDXT25NNR)":
                    url = "https://www.quandl.com/api/v3/datasets/NASDAQOMX/XNDXT25NNR.json"
                elif index2 == "Stock Market Index at Exchange: London Stock Exchange FTSE 100":
                    url = "https://www.quandl.com/api/v3/datasets/WFE/INDEXES_LONDONSEFTSE.json"
                elif index2 == "Stock Market Index at Exchange: NYSE":
                    url = "https://www.quandl.com/api/v3/datasets/WFE/INDEXES_NYSE.json"
                response = requests.request("GET", url, data=payload, headers=headers, params=querystring)
                print("response="+response.text)
                indiceData = json.loads(response.text)
                latestIndicePrices = indiceData["dataset"]["data"][0]
                indexValue = float(latestIndicePrices[1])
        print("dwwsw")
        token = session['oauth_token']
        customersAccount = session['fidor_customer']
        customerDetails = customersAccount['data'][0]

当在循环之后添加打印时,它应该显示打印但它不适合我。

【问题讨论】:

  • 错误显示为 UnboundLocalError: local variable 'url' referenced before assignment
  • 什么循环?请打印错误并回溯到问题中。
  • 为什么使用else 来验证index2?您可以展平 if/else 块并简化事情。

标签: python api flask jinja2


【解决方案1】:

变量 url 仅在 index2 被定义为某物时才被初始化

【讨论】:

    【解决方案2】:

    您的问题是变量 url 可能永远不会被分配任何值。原因是你的 if 条件。

    if condition1:
        url = "something"
    else:
        if condition2:
            url = "something"
        elif condition3:
            url = "something"
        elif condition4:
            url = "something"
        else: # hypothetical
            url is undefined here # and here is your issue
    

    您可以通过添加最后一个 else catch 或在检查任何条件之前将 url 初始化为默认值来解决此问题。

    如果您使用像 Pycharm 这样的优秀 IDE,它甚至会在您运行代码之前就这些问题向您发出警告。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-06
      • 2019-09-11
      • 1970-01-01
      • 1970-01-01
      • 2019-09-10
      • 2020-07-29
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多