8-17---函数的作用域

代码段: 

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())

 

 解析:

  1. 可以看出在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)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值