def test1():
print('in the test1')
def test():
print('in the test')
return test1
print(test)
res=test()
print(res()) #test1()
'''
<function test at 0x0000000005084840>
in the test
in the test1
None
'''
#函数的作用域只跟函数声明时定义的作用域有关,跟函数的调用位置无任何关系
name = 'alex'
def foo():
name='linhaifeng'
def bar():
# name='wupeiqi'
print(name)
return bar
a=foo()
print(a) #作用域为函数本身
a() #bar()
foo()()
'''
<function foo.<locals>.bar at 0x0000000005084F28>
linhaifeng
linhaifeng
'''
name='alex'
def foo():
name='lhf'
def bar():
name='wupeiqi'
print(name)
def tt():
print(name)
return tt
return bar
# bar=foo()
# tt=bar()
# print(tt)
# tt()
print('--'*20)
r1 = foo() #作用域在bar函数返回值,返回值为bar函数的内存地址
print(r1)
print('--'*20)
print(r1()) #作用域在bar函数输出值,返回值为tt函数的内存地址
print('--'*20)
print(foo()()) #作用域在tt函数输出值,返回值为tt函数的内存地址
print('--'*20)
r2 = r1() # 作用域在bar函数输出值
print('--'*20)
r3 = r2() #作用域在tt函数输出值
print('--'*20)
print(foo()()())#作用域在bar/tt函数的输出值,tt函数的返回值为None
'''
----------------------------------------
<function foo.<locals>.bar at 0x00000000050849D8>
----------------------------------------
wupeiqi
<function foo.<locals>.bar.<locals>.tt at 0x00000000050AF730>
----------------------------------------
wupeiqi
<function foo.<locals>.bar.<locals>.tt at 0x00000000050AF378>
----------------------------------------
wupeiqi
----------------------------------------
wupeiqi
----------------------------------------
wupeiqi
wupeiqi
None
'''