在python中调用封闭函数

时间:2019-06-13 23:03:15

标签: python python-3.x

以使用封闭函数的方式,当我使用call方法时不起作用。

def foo():
    x = 20
    def bar():
        return x
    bar()

在这里,当我调用foo()时,它返回None。当我在foo中使用“ return bar”而不是“ bar()”时,与调用foo()()一起使用时效果很好 那么为什么return在封闭函数中不起作用,但print起作用?

2 个答案:

答案 0 :(得分:0)

foo()不返回bar()的值,因为您没有将其作为foo()的返回值传递。

def foo():
    x = 20
    def bar():
        return x
    bar()

    # No return value for foo, this equals return None
    return None

res = foo()
type(res)
# NoneType

如果您想通过bar()来传播foo()的返回值,则需要在其上使用return

def foo():
    x = 20
    def bar():
        return x

    return bar()

res = foo()
x
# 20

答案 1 :(得分:0)

bar()是一个表达式,return bar()是一个语句。除了在lambda中,我们还需要return语句来返回某些内容。