名称空间和作用域

一.名称空间

  在python解释器开始执行之后,就会在内存里开辟一个空间.遇到变量时,就把变量名和值之间的关系记录下来.但是在定义函数的时候,只要不调用函数,解释器是不会把函数内的变量加载到名称空间的.执行函数时,随着函数执行完毕,函数里的变量也会被清空.

def func():
    a = 10
    b = 20
    print(a)
#如果不调用func  函数里面的a 和 b 都不会创建
#如果调用   函数里面的   a b  才会被创建
func()
print(a)    # a不存在

1.名称空间分类

    1.全局名称空间  :  在py文件中,函数外声明的变量都属于全局名称空间

  2.局部名称空间  :  在函数中声明的变量属于局部名称空间

  3.内置名称空间  :  在python解释器为使用人提供的名字   eg : list   tuple    等等

2.加载顺序

  内置名称空间 -> 全局名称空间 -> 局部名称空间(函数被执行的时候)

3.取值顺序

  局部名称空间 -> 全局名称空间 -> 内置名称空间

二.作用域

  作用域就是作用范围.可以分为全局作用域和局部作用域

1.全局作用域

  包含内置名称空间和全局名称空间. 在文件整个位置都可以使用(遵循从上到下逐行执行)

  可以使用globals() 查看全局作用域的内容

2.局部作用域

  只在局部名称空间,也就是在函数内部.

  可以使用locals()查看局部作用域内容

posted @ 2018-12-08 16:37  雾霾1024  阅读(165)  评论(0编辑  收藏  举报