一,例:
def test1():
print(‘in the test1’)
return test
def test():
print(‘in the test’)
return test1
print(test())
res=test()
print(res()) #调用test1函数,返回该值
返回结果为:
in the test
<function test1 at 0x0000017F6BAC8510> #返回test1地址
in the test
in the test1
<function test at 0x0000017F6BAC8598> #返回test地址
二,例:
name=‘songyue’
def foo():
name=‘jicheng’
def bar():
name=‘qiuxiang’
print(name)
return bar
a=foo()
print(a) #返回bar内存地址
a() #调用了foo内部函数bar,打印name为qiuxiang
print(name) #输出全局变量
输出结果为:
<function foo..bar at 0x0000020761238950>
qiuxiang
songyue
三,例:
name=‘alex’
def foo():
name=‘lin’
def bar():
name=‘zhu’
def tt():
print(name)
return tt
return bar
foo()()()
返回结果为:zhu
过程:第一个括号是执行foo函数,然后返回bar的地址,此时没有执行bar 函数。第二个括号是继续执行foo中的bar函数,此时没有执行tt函数,运行结果是返回了tt的地址。第三个括号是运行tt函数,打印name为zhu。与外面的全局变量无关,寻找最近的name变量。