Python"返回"困难

时间:2015-10-15 03:09:03

标签: python return

首先,我要说我已经做了彻底的研究,试图理解。但我不明白别人给出的解释(提问者的理解是这样)。这是我遇到的代码:

def tax(bill):
    """Adds 8% tax to a restaurant bill."""
    bill *= 1.08
    print "With tax: %f" % bill
    return bill

def tip(bill):
    """Adds 15% tip to a restaurant bill."""
    bill *= 1.15
    print "With tip: %f" % bill
    return bill

meal_cost = 100
meal_with_tax = tax(meal_cost)
meal_with_tip = tip(meal_with_tax)

当我删除第一个"返回账单"并运行它,我得到第一个数字,但它尝试计算第二个数字时出错。除税(账单)需要100,输出108对吗?因此,如果我删除第一个"返回账单",那么为什么def tip(bill)没有用108进行计算而不是给出错误?

我在掌握最基本的编程概念时遇到了问题。我现在已经学习了3个月,这就是我的所在。这是一个非常滑的主题,让我的头脑掌握,我真的很感激一些帮助。

1 个答案:

答案 0 :(得分:1)

我相信你误解了returnprint声明之间的区别。

tax(bill)函数中,您将乘以bill *= 1.08。然后,print bill的值。 print仅将bill的值输出到控制台窗口 - 它不存储该值或允许其以任何方式被其他函数使用。

您要删除的return语句会将存储在bill 108中的值返回给调用者。此实例中的调用者是meal_with_tax = tax(meal_cost)。这意味着meal_with_tax的值是tax(bill)的返回值。删除return bill后,您返回的值为None,因此meal_with_tax的值为None。您想要return bill,以便将值108分配给meal_with_tax

tip(bill)返回错误的原因是因为它正在尝试计算None *= 1.15。您认为billtip(bill)的价值不是108