函数作用域

一,例:
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变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值