以使用封闭函数的方式,当我使用call方法时不起作用。
def foo():
x = 20
def bar():
return x
bar()
在这里,当我调用foo()时,它返回None。当我在foo中使用“ return bar”而不是“ bar()”时,与调用foo()()一起使用时效果很好 那么为什么return在封闭函数中不起作用,但print起作用?
答案 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语句来返回某些内容。