微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为什么在此代码中返回5而不是3?

如何解决为什么在此代码中返回5而不是3?

嘿,我对以下代码有疑问:(我使用python 3)

def foo (x):
   def bar (z,x = 0):
      return z + x
   return bar(3,x)

foo(2)

显然,返回值为5。但是无论我如何绘制框架,结果都会在纸上返回3。有人可以帮我吗?谢谢:)

解决方法

如果我正确理解了您的问题,那么您在问为什么程序返回5?

bar中的foo定义的行为就像在foo函数外部定义的一样。 x带有阴影,但它的行为完全是另一个变量。

因此,当您调用foo(2)时,它会调用bar(3,2)并返回3+2 = 5

,

格式化代码有助于理解它。

bar(3,x)在提供x的情况下返回3+x(如果未提供x,则默认为0

foo(2)返回bar(3,x),但由于x为2,则您收到5作为最终响应bar(3,2)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。