【问题标题】:Does return finishes a function on Python?return 是否完成 Python 上的函数?
【发布时间】:2015-07-09 17:51:54
【问题描述】:

我在 codeacademy 上学习,我试图打印以下内容:

def trip_cost(p, d, m):
    return rental_car_cost(d) + hotel_cost(d) + plane_ride_cost(p) + m
    print "%s to %s for %s days with an extra %s dollars of spending mone" (trip_cost(p, d, m), p, d, m)

程序告诉我控制台上没有打印任何东西,所以我继续删除返回行并且它起作用了,所以我想知道是否每次函数到达 return 时它都会完成,在这种情况下如下我可以保存“and days

def rental_car_cost(days):      
    cost = days*40

    if days >= 7:
        cost -= 50
        return cost    
    elif days >= 3 and days < 7:
        cost -= 20
        return cost
    print cost        

【问题讨论】:

  • Python 对缩进敏感。您需要正确缩进代码。
  • 谢谢我,只是我不擅长复制回来。我只是编辑它
  • @NayukiMinase 实际上,只要每个块处于同一级别,您就可以有不同的缩进级别。即使代码不是很简单,代码也能正常工作:)
  • 这在the relevant documentation 中有介绍。
  • 你是对的,return 完成函数。

标签: python function return


【解决方案1】:

所以我想知道一个函数是否每次返回它都会完成

是的,它返回它的名字,因此得名。

在这种情况下,我可以在下面的代码中保存and days &lt; 7

是的。你也可以忽略它,因为elif 的意思是“否则如果”,所以即使你没有return,也只有在之前的if 为假的情况下才会考虑这种情况,因此它被认为是else .

这里一般我们称代码and days &lt; 7冗余。删除冗余代码是个好主意。如果冗余使某些事情更清楚,那么将其保留下来并没有什么坏处,但通常冗余更可能使某人感到困惑而不是帮助他们,尤其是当您更熟悉该语言时。

【讨论】:

    【解决方案2】:

    是的,您可以省略and days &lt; 7

    【讨论】:

      【解决方案3】:

      是的,return 完成了函数,在该行执行后没有其他内容。您的示例适用于 if-elif-else 语句,因为将检查并执行适当的条件,返回相应的 cost

      作为提示,您可以使用elif 3 &lt;= days &lt; 7 代替elif days &gt;= 3 and days &lt; 7。 Python就是这样!在您的条件结构方式中,您可以使用elif days &gt;=3

      【讨论】:

      • 在代码中,days 保证小于7,因此无需检查。
      • @TigerhawkT3:是的,添加了注释以简化elif 更多部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-11
      • 1970-01-01
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多