【问题标题】:Functions in python return variablepython中的函数返回变量
【发布时间】:2021-03-26 13:52:15
【问题描述】:

嘿,我需要关于我在 edx 练习课程中找到的以下代码的帮助!

        def foo(x, y = 5):
           def bar(x):
             return x + 1
           return bar(y * 2)
      
        foo(3)

第一步是数字 3 将进入 foo 中的 x 变量,因为 y 已经给出 5。所以 foo(3,5)。第二步是def bar(3),应该返回4,但是为什么这一步会直接返回bar(y * 2),即bar(5*2),然后返回bar(10)并返回11。

【问题讨论】:

  • 因为那只是函数定义,不是函数调用。

标签: python python-3.x function


【解决方案1】:

第二步是def bar(3)

这是不正确的。 def bar(x): 正在使用 new x 变量创建第二个函数。那个内部的x 遮蔽了外部范围内的x,并且不与另一个x 共享一个值。

一旦输入foo,就会评估bar 的定义(但函数不会运行)。然后控制权传递给bar(y * 2),10 传递给bar

【讨论】:

    【解决方案2】:

    如果您在理解代码的作用时遇到问题,请将其写得更清楚。你的 sn-p 相当于:

    def bar(x):
        ret = x + 1
        return ret
    
    def foo(x, y=5):
        ret = bar(y * 2)
        return ret
    
    foo(3)
    

    如您所见,您传递给foo() 的“3”从未使用过。 foo() 将 y 加倍并加一(通过 bar()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-09-04
      • 2015-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2020-08-10
      相关资源
      最近更新 更多