2017-03-24 91 views
1

您好,我是Python的新手。Python變量 - 名稱''未定義

變量聲明令人沮喪,因爲它應該很容易,但我有這樣的困難時間,使這項工作.. 我讀過其他stackoverflow的問題,顯然沒有這樣的事情,在Python中的初始化,我需要關鍵字:全球變量之前使用它在不同的地方..

@app.route('/calculate', methods = ['GET'])  

def calculate(): 
     # get value from html by request.args.get() 

Option1。

global newWeightForSecondItem 
    if weightT1 != weightT2: 
     newWeightForSecondItem = convert(weightT1, weightT2, weight2) 

選項2

if weightT1 != weightT2: 
     global newWeightForSecondItem = convert(weightT1, weightT2, weight2) 

無論是工程.. 當我做這樣的計算之下,我得到一個錯誤:NameError:名字 'newWeightForSecondItem' 沒有定義。

if discountT2 == "percentage": 
     finalPrice2 = float((float(price2) - (float(price2) * float(discount2)))/newWeightForSecondItem) 
    elif discountT2 == "dollar": 
     finalPrice2 = float((float(price2) - float(discount2))/newWeightForSecondItem) 


def convert(weightT1, weightT2, weight2): 
    # converting calculation here 

return weight2 


# main method 
if __name__ == '__main__': 
    app.debug = True 
    app.run() 
+2

在Python中沒有變量聲明,所以這可能解釋了爲什麼你發現它很困難。 –

+2

你可以發佈一組更完整的代碼......這是一個範圍界定問題,你沒有向我們展示你的範圍。 – TemporalWolf

+0

@TemporalWolf基於您的建議,我添加了整體代碼。謝謝。 –

回答

0

,如果你想擁有newWeightForSecondItem作爲一個全局變量也許你可以試試這個:

newWeightForSecondItem = None 

@app.route('/calculate', methods = ['GET'])  
def calculate(): 
    global newWeightForSecondItem 
    if weightT1 != weightT2: 
     newWeightForSecondItem = convert(weightT1, weightT2, weight2) 

您聲明/初始化全局變量,然後你可以使用它在函數內部

+0

感謝您的評論。我不再有同樣的錯誤了,但現在我在計算中得到NonType .. –

+0

而不是newWeightForSecondItem =無,你應該在使用它之前初始化值。可能將它設置爲newWeightForSecondItem = 0. –

+1

@GabrielFalcones將產生一個'ZeroDivisionError',因爲他在分配給它之前調用它。 – TemporalWolf

1

我花了很多時間來弄清爲什麼我得到這個錯誤。 NameError:名稱'newWeightForSecondItem'未定義。

但是,這不是主要問題。我忘了將字符串轉換爲newWeightForSecondItem的浮點數據類型。在我將其更改爲浮動(newWeightForSecondItem)後,它可以工作。這是一個非常容易的錯誤,我認爲python的錯誤不是很有幫助。

謝謝大家的所有意見。