名称空间和作用域
- 名称空间(namespace) 是存放名字与值绑定关系的地方
- 分类:
- 内置名称空间
存放python解释器内置名字,比如内置函数名:len, max,sum.
创建:随着python解释器的启动而创建
销毁:随着python解释器的关闭而销毁
- 全局名称空间
存放文件级别的名称,比如x=1 def f1(): x=1 if x==1:
创建: 文件开始执行时
销毁:文件执行完毕时
- 局部名称空间
存放函数内的名字,需要强调的是函数的参数也属于局部的
创建:函数执行时才临时创建
销毁:函数执行完毕则立即销毁。
def f1()
x=1
f1()
- 名称空间的加载顺序
内置名称空间--》全局名称空间--》局部名称空间
- 名称空间的查找名字顺序
局部名称空间--》全局名称空间--》内置名称空间
按照顺序依次注释掉len,看实验效果。
len=10 5.
def f1():
len=100 3.
def f2():
len=1000 2.
def f3():
len=10000 1.
print(len)
f3()
f2()
len=1111111111 4
f1()
- 名字的查找关系在函数定义阶段
- global只能改全局的
nolocal 会从当前层的外一层开始查找,一直找到最外层的函数
原文地址:https://www.cnblogs.com/morron/p/9048930.html
时间: 2024-11-06 07:16:39