嵌套函数和作用域

Posted hui147258

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了嵌套函数和作用域相关的知识,希望对你有一定的参考价值。

看上面的标题的意思是,函数还能套函数?

name = "Alex"
 
def change_name():
    name = "Alex2"
 
    def change_name2():
        name = "Alex3"
        print("第3层打印",name)
 
    change_name2() #调用内层函数
    print("第2层打印",name)
 
 
change_name()
print("最外层打印",name)

此时,在最外层调用change_name2()出错

 

作用域在定义函数时就已经固定住了,不会随着调用位置的改变而改变

例一:
name=alex

def foo():
    name=lhf
    def bar():
        print(name)
    return bar

func=foo()
func()


例二:
name=alex

def foo():
    name=lhf
    def bar():
        name=wupeiqi
        def tt():
            print(name)
        return tt
    return bar

func=foo()
func()()

 

以上是关于嵌套函数和作用域的主要内容,如果未能解决你的问题,请参考以下文章

013.Python之函数嵌套名称空间与作用域闭包函数

Javascript嵌套函数失去作用域

函数的嵌套和作用域

可变长参数函数对象嵌套名称空间和作用域

python函数基础:嵌套函数作用域匿名函数递归函数

9-29 函数嵌套及作用域链