我正在尝试学习Python,而我真的很难将我的代码纳入独立的函数中。这是一个例子:
def get_inputs():
sales_amount = float(input("Enter total sales amount: "))
def calculate_discount(sales_amount):
discount_amount = sales_amount * 2
return discount_amount
def output():
print ( discount_amount )
def main():
get_inputs()
calculate_discount(sales_amount)
output()
main()
运行此返回
File "/Users/Desktop/assA3.py", line 17, in <module>
main()
File "/Users/Desktop/assA3.py", line 14, in main
calculate_discount(sales_amount)
NameError: name 'sales_amount' is not defined
我认为该变量sales_amount
是在以后引用之前由用户输入定义的。我不知道我想念什么。
对于这个问题的根本性,我深表歉意,但我显然对一些基本问题误解了,我真的很努力。任何帮助将不胜感激。谢谢。
您正在尝试在其他函数中使用函数作用域变量。函数外部什么get_inputs
都看不到variable sales_amount
,它是该函数局部的变量。您将遇到与相同的问题discount_amount
,范围仅限于calculate_discount
。
而是返回值并将它们传递给其他函数。
def get_inputs():
return float(input("Enter total sales amount: "))
def calculate_discount(sales_amount):
discount_amount = sales_amount * 2
return discount_amount
def output(discount_amount):
print ( discount_amount )
def main():
inputs = get_inputs()
discounts = calculate_discount(inputs)
output(discounts)
main()
肮脏的选择是使它们成为全局变量
def get_inputs():
global sales_amount
sales_amount = float(input("Enter total sales amount: "))
def calculate_discount(sales_amount):
global discount_amount
discount_amount = sales_amount * 2
return discount_amount
def output():
print ( discount_amount )
def main():
get_inputs()
calculate_discount(sales_amount)
output()
main()
全局变量更慢,使代码更难维护,并且由于种种原因而变得不好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句