Python变量 - 名称''未定义

时间:2017-03-24 22:05:17

标签: python variables global

你好,我是Python的新手。

变量声明令人沮丧,因为它应该很容易,但我很难做到这一点。 我已经阅读了其他stackoverflow问题,显然没有Python中的初始化这样的东西,我需要关键字:global变量在不同的地方使用它..

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

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

选项1。

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

选项2。

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

两者都没有.. 当我在下面进行这样的计算时,我收到一个错误:NameError:name' 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 个答案:

答案 0 :(得分:1)

我花了很多时间弄清楚为什么会出现这个错误。 NameError:未定义名称“newWeightForSecondItem”。

然而,这不是主要问题。我忘了将字符串转换为newWeightForSecondItem的float数据类型。在我将其更改为float(newWeightForSecondItem)后,它可以正常工作。这是一个非常容易犯的错误,我认为python的错误不是很有用。

感谢大家的所有评论。

答案 1 :(得分:0)

如果您想将newWeightForSecondItem作为全局变量,也许可以试试这个:

 newWeightForSecondItem = None

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

您声明/初始化全局变量,然后您可以在函数

中使用它