我觉得这个问题很愚蠢,因为我并不完全确定如何用它来表达。我认为最好不要解释我的问题。
好的,在Code Academy上,他们给出了这个任务:
在现有代码下方,定义一个名为trip_cost
的函数,它接受两个参数city
和days
。
与上面的示例一样,让您的函数返回调用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
的变量中获取?我想我问这是怎么回事?
我试图理解如何说出这个问题。有人可以打破这个吗?哈哈,我甚至不知道该怎么称呼它,因为这个概念有点令人困惑。我的意思是我明白了,但我不理解它(如果这是有道理的。)在定义函数时,仅是否有效?
另外,为什么它被称为"调用函数",在这种情况下它实际上 替换 一个函数?
答案 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说,"我只知道city
和days
。我没有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