嘿,我对以下代码有疑问:(我使用python 3)
def foo (x):
def bar (z, x = 0):
return z + x
return bar(3, x)
foo(2)
显然,返回值为5
。但是无论我如何绘制框架,结果都会在纸上返回3
。有人可以帮我吗?谢谢:)
答案 0 :(得分:0)
如果我正确理解了您的问题,那么您在问为什么程序返回5?
bar
中的foo
定义的行为就像在foo
函数外部定义的一样。 x
带有阴影,但它的行为完全是另一个变量。
因此,当您调用foo(2)
时,它会调用bar(3, 2)
并返回3+2
= 5
。
答案 1 :(得分:0)
格式化代码有助于理解它。
bar(3,x)
在提供x的情况下返回3+x
(如果未提供x,则默认为0
。
foo(2)
返回bar(3,x)
,但由于x为2
,则您收到5
作为最终响应bar(3,2)