函数式编程以及内置函数--函数作用域

name="alex"
def foo():
    name="lhf"
    def bar():
        print(name)     
    bar()
foo()              #执行结果使lhf,因为在寻找变量的时候,先在自己这里找,找不到就去上一级别找 

name="alex"
def foo():
name="lhf"
def bar():
print(name)
return bar
print(foo()) #输出结果为一个内存地址,因为上面的返回值返回的是bar,返回一个函数名代表他的地址。但是注意这里没有运行foo,只是打印了返回值。


例题:
def test1():
print("i am in test1")
def test():
print("i am in test")
return test1
res=test() #执行test(),然后将返回值test1赋予res,这里返回的是test1的内存地址
print(res()) #执行test1的内存地址对应的函数,然后返回值打印,注意test1没有返回值,所以默认返回的是NOne
#输出结果为 i am in test
# i am in test1
# None

name="alex"
def foo():
name="lhf"
def bar():
print(name)
return bar
res=foo() #返回的是一个内存地址
print(res)
res() #内存地址+()代表执行这个函数


看懂这个例题的输出结果就可以
name="alex"
def foo():
name="lhf"
def bar():
name="wupeiqi"
def tt():
print(name)
return tt
return bar
abc=foo()
print(abc)
b=abc()
b()
foo()()()    #这么写也行
 
 
 

  

猜你喜欢

转载自www.cnblogs.com/yxzymz/p/12736853.html