Python 为什么下面的代码执行lambda函数而不是上面的f(x)?

Python 为什么下面的代码执行lambda函数而不是上面的f(x)?,python,function,Python,Function,头衔 我不明白为什么下面的代码会忽略第一个函数而运行第二个函数 def f(x): return 100 f = lambda x: 1 if x < 2 else x + f(x-1) print(f(5)) def(x): 返回100 f=λx:1,如果x

头衔

我不明白为什么下面的代码会忽略第一个函数而运行第二个函数

def f(x):
    return 100
f = lambda x: 1 if x < 2 else x + f(x-1)
print(f(5))
def(x):
返回100
f=λx:1,如果x<2,则x+f(x-1)
印刷品(f(5))
输出为15


谢谢。

第二个定义取代了第一个定义。变量不能有两个值。函数名实际上只是变量。分配给
f
时,覆盖了
f
的值,因此无法再访问原始函数。

将第一个函数定义为f。您可以立即使用另一个函数重写该函数,将该函数调用为f。这就像运行代码一样:

f = [1, 2, 3]
f = 7
print f

您将只获得7;列表丢失。

为什么希望它运行第一个函数?
def(x)…
在这种情况下相当于
f=lambda x:100
(对于更复杂的函数,这是不成立的。函数定义在某种程度上并不优于赋值-
f
与任何其他变量一样。首先将
f
赋值给返回
100
的函数。然后,将
f
赋值给另一个函数。然后,调用
f
-显然,
f
否。)w是您定义的lambda函数,因此它将调用它。