def one_good_turn(n):
return n + 1
def deserves_another(n):
return one_good_turn(n) + 2
print(one_good_turn(1))
print(deserves_another(2))
由于我在调用函数时有两个函数one_good_turn(n)
和deserves_another(n)
,因此我传递了参数1
和2
:
我希望输出为:
2
4
但它显示:
2
5
为什么输出不符合我的预期?
答案 0 :(得分:1)
我相信您假设one_good_turn(n)
中的deserves_another(n)
将返回先前计算的值。 否即可。它获取当前输入n
2
,再次调用该函数,执行2+1
3
。然后添加3 + 2 = 5
。
也许要获得所需的输出,您应该将1
传递给deserves_another
:
def one_good_turn(n):
return n + 1
def deserves_another(n):
return one_good_turn(n) + 2
print(one_good_turn(1)) # 2
print(deserves_another(1)) # 4
更好的方法是从one_good_turn
返回值并将其传递给deserves_another
。因此,您无需再次在one_good_turn
内致电deserves_another
:
def one_good_turn(n):
n = n + 1
print(n) # 2
return n
def deserves_another(n):
return n + 2
n = one_good_turn(1)
print(deserves_another(n)) # 4
答案 1 :(得分:0)
one_good_turn(2)
返回2 + 1 = 3。
然后结果传递给deserves_another
,返回3 + 2 = 5.