名称空间与作用域

一 什么是名称空间?

#名称空间:存放名字的地方,三种名称空间.

python解释器自带的:内置空间名称
自定义的py文件内,顶着最左边定义的:全局名称空间
函数内部定义的:局部名称空间
name='tank'
def func1():
    print("func1")
    print("name")    #此时,可以查找到全局名称空间name,估结果为tank(调用顺序见下图)


    def func2():
        print("func2")
    func2()


print(name,'全局打印')
func1()
结果:可有正常输出

  

def func1():
    name = 'tank'
    print("func1")
    print("name") ##此时,print(name)调用成功,因为它为局部位置,故先找局部名称空间


    def func2():
        print("func2")
    func2()


print(name)    ####此时,print(name)调用失败,因为它顶格位置,只寻找全局名称空间和内置名称空间
func1()

  

名称空间的加载顺序

python test.py
#1、python解释器先启动,因而首先加载的是:内置名称空间
#2、执行test.py文件,然后以文件为基础,加载全局名称空间
#3、在执行文件的过程中如果调用函数,则临时产生局部名称空间

 

运行调用过程如上图

 
原文地址:https://www.cnblogs.com/evan0925/p/11014772.html