【问题标题】:Replacing a Function with a Variable?用变量替换函数?
【发布时间】:2015-07-31 18:06:12
【问题描述】:

我觉得这个问题会很愚蠢,因为我不完全确定如何表达它。我认为最好不要过度解释我的问题。

好的,所以 Code Academy 他们给了这个作业:

在现有代码下方,定义一个名为 trip_cost 的函数,该函数接受两个参数,citydays

与上面的示例一样,让您的函数返回调用rental_car_cost(days)hotel_cost(days)plane_ride_cost(city) 函数的sum

为什么/以下是如何工作的(我明白了,但我不明白。):

调用hotel_cost(nights)函数是完全有效的 变量days。就像上面我们调用的例子一样 double(n) 带有变量 a,我们将 days 的值传递给 参数nights中的新函数。

我做对了代码并通过了:

def hotel_cost(nights):
    return 140 * nights
def plane_ride_cost(city):
    if city == "Charlotte":
        return 183
    elif city == "Tampa":
        return 220
    elif city == "Pittsburgh":
        return 222
    elif city == "Los Angeles":
        return 475
def rental_car_cost(days):
    cost = 40 * days
    if days >= 7:
        cost -= 50
    elif days >= 3:
        cost -= 20 
    return cost    
def trip_cost(city, days):
    return plane_ride_cost(city) + hotel_cost(days) + rental_car_cost(days)

一开始我放hotel_cost(nights),后来改成hotel_cost(days)就通过了。现在它让我很困惑。该函数如何以及为什么从def 中获取变量?我想我是在问它是如何工作的?

我试图理解如何表达这个问题。有人可以打破这个吗?哈哈我什至不知道给这个取什么名字,因为这个概念有点混乱。我的意思是我明白了,但我不明白(如果有道理的话。)这在定义函数时有效吗?

另外,为什么它被称为“调用函数”,而在这种情况下它实际上是替换一个函数?

【问题讨论】:

标签: python variables call function


【解决方案1】:

当您定义一个函数时,例如:def hotel_cost(nights) 变量 nights 只是您传递给函数的任何名称。它不必与您发送的任何内容的名称相匹配。

所以当你说def trip_cost(city, days):时,Python 是在说: "好的,我期待这个函数中有两个变量,一个名为 city,一个名为 days

所以当你尝试调用时

def trip_cost(city, days):
    return plane_ride_cost(city) + hotel_cost(nights) + rental_car_cost(days)

Python 说:“我只知道citydays。对我来说没有nights 变量这样的东西,你会得到一个错误。

如果您拨打类似cost = trip_cost(city, nights) 的电话,即使也是如此。虽然它是nights 来电者。据该函数所知,一旦它在函数内部执行,它只会将第二个事物视为days

在更专业的定义中,这称为范围。函数的范围是它可以在自身之外“看到”的内容以及它不能“看到”的内容。在这种情况下,trip_cost 唯一能看到的是给它的两个东西,位置 1 的东西定义为 city 和位置 2 的东西定义为 days

【讨论】:

    【解决方案2】:

    我正在学习 codecademy 课程,这个话题让我很困惑。但是我了解到argument实际上就像变量的定义,并且可以更改。所以如果你这样做:

    def add(x):
        return x + 10
    

    函数的作用是在函数内部,并且是缩进的。这个论点就像一个数学 variable。它代表另一个值,或variable。这样argument就可以被一个变量替换了,而每次variablefunction中弹出,都会被替换为替换变量。可以有任意数量的arguments。一个功能(明白吗?)示例是:

    def math(x, y, z): # x is the operation
        if x == 'add':
            return y + x
        if x == 'subtract':
            return y - x
        if x == 'multiply':
            return y * x
        if x == 'divide':
            return x / y
    
    mat = input('Enter an operation: ')
    ma = input('Enter the first number:')
    nat = input('Enter the second number:')
    
    print math(mat, ma, nat) # This prints the function and everything returned to it, with the new arguments
    

    【讨论】:

      猜你喜欢
      • 2014-09-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-05
      • 1970-01-01
      • 2021-09-26
      • 2021-02-05
      • 2017-11-09
      相关资源
      最近更新 更多