python中的函数调用函数

时间:2018-04-08 06:15:03

标签: python

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),因此我传递了参数12

我希望输出为:

2
4

但它显示:

2
5

为什么输出不符合我的预期?

2 个答案:

答案 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.