你好,我是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()
答案 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)
您声明/初始化全局变量,然后您可以在函数
中使用它