Python 命名空间的生命周期
不同的命名空间在不同的时刻创建,有不同的生存期。
1、内置命名空间在Python解释器启动时创建,会一直保留,不被删除。
2、模块的全局命名空间在模块定义被读入时创建,通常模块命名空间也会一直保存到解释器退出。
3、当函数被调用时创建一个局部命名空间,当函数返回结果或抛出异常时,被删除。每一个递归调用的函数都拥有自己的命名空间。
Python的一个特别之处在于其赋值操作总是在最里层的作用域。赋值不会复制数据——只是将命名绑定到对象。删除也是如此:"dely"只是从局部作用域的命名空间中删除命名y。事实上,所有引入新命名的操作都作用于局部作用域。
示例:
i=1
deffunc2():
i=i+1
func2();
#错误:UnboundLocalError:localvariable'i'referencedbeforeassignment
由于创建命名空间时,python会检查代码并填充局部命名空间。在python运行那行代码之前,就发现了对i的赋值,并把它添加到局部命名空间中。当函数执行时,python解释器认为i在局部命名空间中但没有值,所以会产生错误。
deffunc3():
y=123
dely
print(y)
func3()
#错误:UnboundLocalError:localvariable'y'referencedbeforeassignment
#去掉"dely"语句后,运行正常
以上内容为大家介绍了Python命名空间的生命周期,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注IT培训机构:千锋教育。

相关推荐HOT
更多>>
python sorted对键和值进行排序
pythonsorted对键和值进行排序1.概念sorted函数就比sort函数要强大许多了,sort只能对列表进行排序,sorted可以对所有可迭代类型进行排序,并且...详情>>
2023-11-08 23:03:34
python中temp是什么意思?
python中temp是什么意思?当我们在写代码时,为防止系统崩溃等原因,随机记得临时保存是个好习惯。操作过程中想要进行临时保存会放入临时文件夹t...详情>>
2023-11-08 20:44:27
python如何将九九乘法表写入到Excel?
python如何将九九乘法表写入到Excel?现在使用python去输出九九乘法表,已经不再稀奇,我们经常输出的环境是文本,但是今天教大家更为复杂一点的...详情>>
2023-11-08 19:57:53
Python语言中mod表示什么意思
python语言中mod表示取模运算符。语法MOD(a,b)通常情况下取模运算(mod)和求余(rem)运算被混为一谈,因为在大多数的编程语言里,都用'%'...详情>>
2023-11-08 15:27:49热门推荐
python高级函数有几个?
沸python sorted对键和值进行排序
热python中Cartopy是什么
热python time.strptime的格式化
新python中ruamel.yaml模块是什么?
python中temp是什么意思?
python如何将九九乘法表写入到Excel?
python如何使用TemporaryFile()方法创建临时文件?
python怎么安装idle
python如何以换行分割
python3中字符串怎么切片
python如何变为exe程序
python如何处理csv类型文件
python空格怎样设置
技术干货






