代码段:
def test_1(): print("in the test") def test(): return test_1 #test_1表示变量名,它代表这个函数的内存地址 test() print("".center(40,"*") test()() print("".center(40,"*")) res = test() print(res) #输出的是test_1()函数的地址,如果写成print(res()),表示调用res地址所对应的函数,也 #就是test_1()函数 print(res())
解析:
- 可以看出在test()函数里返回test_1()的函数名,最终调用test(),下面会没有任何显示,为什么呢?因为你用return test_1
返回的只是test_1()函数的内存地址,函数的函数名表示的就是它本身的内存地址。所以,如果是把test()赋值给一个变量res, 则输出的值是<function test_1 at ...>,这个结果就表示test_1d的内存地址
- 想要调用这个函数,直接在函数名后面加上(),print(res())就会调用test_1()函数。
- 还可以直接test()(),因为test()表示返回test_1()的 函数名,相当于test,后面再加个(),test()()<==>test_1() , 结果就是下面直接输出(in the test)