困惑于Python中的一个简单函数

时间:2018-07-14 06:51:19

标签: python-3.x function

看下面的代码:

def foo (x):

    print("foo environment: x = {0}".format(x))
    def bar (z, x = 0):
        print("bar environment: z = {0} and x = {1}.  Value to be returned: {2}".format(z, x, x+z))
        return z + x

    return bar(3)

foo(5)

foo environment: x = 5
bar environment: z = 3 and x = 0.  Value to be returned: 3
3

既然在foo环境中x = 5,为什么bar使用值0?

您的建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

您在这里只传递了一个参数:

return bar(3)

bar函数接受两个值,一个z和一个x(x的默认值为(0),这就是为什么只有1个参数就足够了)。仅通过传递z,x = 0。

尝试一下,看看会发生什么:

return bar(3, x)