用变量替换函数?

时间:2015-07-31 18:06:12

标签: python variables call function

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

好的,在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的变量中获取?我想我问这是怎么回事?

我试图理解如何说出这个问题。有人可以打破这个吗?哈哈,我甚至不知道该怎么称呼它,因为这个概念有点令人困惑。我的意思是我明白了,但我不理解它(如果这是有道理的。)在定义函数时,是否有效?

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

2 个答案:

答案 0 :(得分: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。就函数所知,只有在函数内部执行时,它才会看到第二个 thing days

在更技术性的定义中,这称为范围。功能的范围是它能够"看到"在自身之外,它不能。在这种情况下,trip_cost唯一可以看到的是给定的两件事,第1位的东西,你定义为city,第2位的东西你定义为days

答案 1 :(得分:0)

我参加了codecademy课程,这个主题让我很困惑。但我了解到argument实际上就像变量的定义一样,并且可以更改。如果你这样做:

def add(x):
    return x + 10

该函数的功能是在函数内部,并且是缩进的。这个论点就像一个数学 variable。它代表另一个值,或variable。因此,argument可以替换为变量,并且每次variable中弹出function时,它都会被替换变量替换。您可以拥有尽可能多的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