函数的作用域

1.是访问变量时查找变量名的范围

* 变量名查找规则: 
在访问变量时,先查找本地变量,然后是包裹此函数外部的函数内的变量,之后是全局变量 
最后是內建作用域内的变量 

即: L –> E —> G —> B 
** 在默认情况下,变量名赋值会在当前作用域内创建变量和修改变量

v = 100  # 全局作用域
def fun1():
    v = 200  # 外部嵌套函数作用域
    print('fun1.v=', v)

    def fun2():
        v = 300  # 局部作用域
        print('fun2.v=', v)
        print(max)  # max函数都没有创建,在内建函数作用域中,只读,不能改变
                    # 可以在其余三个作用域重新创建。
    fun2()
fun1()
print("全局变量.v=", v)
print(max)

2.示例2

name = 'alex'
def foo():
    name = 'lhf'
    def bar():
        name = 'wupeiqi'
        def tt():
            print(name)
        return  tt
    return bar
 func = foo()#逐步调用函数,这里调用后的结果是bar()
 tt = func()#这个步骤是调用bar() 返回tt
 print(tt)
 tt()#调用tt()函数
#foo()()()#合并上面几个步骤

  

3.示例3

name = 'alex'
def foo():
    name = 'linhaifeng'
    def bar():
        name = 'wupeiqi'
        print(name)
    return bar
a = foo()
print(a)
a() #bar()

 

posted on 2019-05-21 16:37  测试小伙子  阅读(107)  评论(0编辑  收藏  举报

导航