名称空间与作用域
一 什么是名称空间?
#名称空间:存放名字的地方,三种名称空间.
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、在执行文件的过程中如果调用函数,则临时产生局部名称空间
运行调用过程如上图