简单' Def和If'在考试中,我无法弄清楚

时间:2017-01-15 12:20:07

标签: function if-statement

这个问题出现在我的Python考试中,我无法回答。

x = 7
y = 3
def a(x):
    return b(x)
def b(y):
    if y == 6:
        return x - y
    return a(x-1)
print(a(4))

答案是1。 但我不确定它是如何衍生出来的。

希望有人能给我一个明确的解释。提前致谢。

2 个答案:

答案 0 :(得分:0)

调用程序是:

a(4)
b(4)
a(6)
b(6)  # returns 7 - 6 = 1

答案 1 :(得分:0)

如果我们从代码中删除噪音:

def a(x):
    return b(x)

功能a只是b的别名,我们可以完全删除a

x = 7
y = 3
def b(y):
    if y == 6:
        return x - y
    return b(x - 1)
print(b(4))

让我们重命名参数以正确区分变量和函数参数:

x = 7
y = 3
def b(paramY):
    if paramY == 6:
        return x - paramY
    return b(x - 1)
print(b(4))

def b(paramY):
    if paramY == 6:
        return 7 - paramY
    return b(7 - 1)
print(b(4))

def b(paramY):
    if paramY == 6:
        return 7 - paramY
    return b(6)
print(b(4))

现在,如果你注意到这个功能:

  • 如果paramY6,则会返回7 - paramY,即7 - 6,即1
  • 如果paramY不是6,则会返回b(6),也就是说,它还会返回1

传递给b函数的内容并不重要,它将始终返回1