|
发表于 2020-7-10 10:08:58
|
显示全部楼层
本楼为最佳答案
本帖最后由 Twilight6 于 2020-7-10 10:16 编辑
要知道 当函数名带上括号时候,函数返回的是函数运行的结果
而当函数名不带括号时候,函数返回的是一个函数体
def funX(x):
def funY(y):
return x*y
return funY
因为你定义的 funX 函数返回的是 funY ,当函数不带括号时候就代表一个函数体,也就是这 funY 一整个函数
所以你这里 temp= funX(8) ,带上括号,所以是把 x = 8 传入后调用函数运行的结果,就可以看成:
def funX(8):
def funY(y):
return 8*y
return funY
又因为返回的是 funY 不带括号,是整个函数体,所以实际上 temp= funX(8) 就等于了 temp = funY 即代码可以看成这样:
此时你在对 temp(5) 那么就是 将 funY 的 y 参数赋值为 5
所以最后返回的结果是 return 8 * 5
第一次是对 x 传入参数,因为第一次调用返回的是个函数,则第二次传入的参数就是返回后函数的参数值了,即第一次 x = 8,第二次 y = 5
|
|