python - Python - 帧之间的返回值偏移
问题描述
在下面的代码中,我很难理解返回值是如何在函数范围之间移动的。
def x(y):
def y(z):
x = lambda x: x**2
y = lambda x: x+2
def z(x):
return x(5)
return z(y)
return y(x)
print(x(lambda x: x+1))
我知道返回值被评估为 7,因为y = lambda x: x+2
它被传递到z(x)
where 5+2 = 7。我通过 Visualize Python 运行我的代码以了解它是如何工作的,但我不了解最后三个步骤。
如果有人能告诉我这里发生了什么,我将不胜感激。谢谢你。
解决方案
z
返回7
,因为在f2
(或def y(z):
区域中)的范围内,y
指向lambda x: x+2
,并z
返回y(5)
。y
在第 4 行中分配。(这由第一张图像中的蓝色箭头表示)y
(或f2
)简单地返回函数z
(属于y
/的框架f2
)返回的内容。不要被符号所欺骗z(y)
。因为y
括号中的lambda x: x+2
, asy
已重新分配给该值。所以y
回报也7
。x
(orf1
) 返回y
属于x
(orf1
) 范围的返回值。y
在x
(orf1
) 的范围内恰好是f2
并且它返回7
. 所以x
或f1
,将返回7
。
如果仍有不清楚的地方,请告诉我是哪一部分。
推荐阅读
- ejs - 我的本地主机页面显示错误没有默认引擎
- kubernetes - 有没有办法保护主节点免于自动缩放?
- java - 调用 break 时,while 循环没有中断
- go - FaunaDB 搜索文档并根据分数获得其排名
- c# - 将具有透明背景的图像上传到 azure blob 显示具有黑色背景的图像
- javascript - 如何在数组中组合具有相同值的对象?
- android - Android Keyboard 覆盖recyclerView下的edittext
- flutter - 我有颤振状态管理的问题
- python - 如何更改 statsmodel 的 plot_acf 函数的颜色?
- sas - 如果表为空,如何获得等于零的行数而不是什么都没有是SAS