Python - return 帧之间的值偏移
Python - return value shift between frames
在下面的代码中,我很难理解 return 值是如何在函数范围之间移动的。
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))
我知道 return 值被评估为 7,因为 y = lambda x: x+2
被传递到 z(x)
,其中 5+2 = 7。我 运行 我的代码通过可视化Python以了解其工作原理,我不理解最后三个步骤。
第 16 步(共 18 步):
第 17 步(共 18 步):
第 18 步(共 18 步):
如果有人能告诉我这里发生了什么,我将不胜感激。谢谢。
z
returns 7
因为在f2
范围内(或者在def y(z):
区域),y
指向
lambda x: x+2
,以及 z
returns y(5)
。 y
在第 4 行赋值。(这由第一张图中的蓝色箭头表示)
y
(或f2
)简单的说return是什么函数z
(属于y
的框架/ f2
) returns。不要被符号 z(y)
欺骗了。因为括号中的 y
是 lambda x: x+2
,因为 y
已被重新分配给该值。所以 y
return 也是 7
.
x
(或f1
)returns什么y
属于x
(或f1
) returns。 x
(或f1
)范围内的y
恰好是f2
,而return是7
。
所以x
或f1
,会return7
.
如果还有什么不清楚的,请告诉我是哪一部分。
在下面的代码中,我很难理解 return 值是如何在函数范围之间移动的。
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))
我知道 return 值被评估为 7,因为 y = lambda x: x+2
被传递到 z(x)
,其中 5+2 = 7。我 运行 我的代码通过可视化Python以了解其工作原理,我不理解最后三个步骤。
第 16 步(共 18 步):
第 17 步(共 18 步):
第 18 步(共 18 步):
如果有人能告诉我这里发生了什么,我将不胜感激。谢谢。
z
returns7
因为在f2
范围内(或者在def y(z):
区域),y
指向lambda x: x+2
,以及z
returnsy(5)
。y
在第 4 行赋值。(这由第一张图中的蓝色箭头表示)y
(或f2
)简单的说return是什么函数z
(属于y
的框架/f2
) returns。不要被符号z(y)
欺骗了。因为括号中的y
是lambda x: x+2
,因为y
已被重新分配给该值。所以y
return 也是7
.x
(或f1
)returns什么y
属于x
(或f1
) returns。x
(或f1
)范围内的y
恰好是f2
,而return是7
。 所以x
或f1
,会return7
.
如果还有什么不清楚的,请告诉我是哪一部分。