Python 命名空间的生命周期

发布时间:2022-05-10 09:57:52 人气:37 作者:多测师

  不同的命名空间在不同的时刻创建,有不同的生存期。

  1、内置命名空间在 Python 解释器启动时创建,会一直保留,不被删除。

  2、模块的全局命名空间在模块定义被读入时创建,通常模块命名空间也会一直保存到解释器退出。

  3、当函数被调用时创建一个局部命名空间,当函数返回结果 或 抛出异常时,被删除。每一个递归调用的函数都拥有自己的命名空间。

  Python 的一个特别之处在于其赋值操作总是在最里层的作用域。赋值不会复制数据——只是将命名绑定到对象。删除也是如此:"del y" 只是从局部作用域的命名空间中删除命名 y 。事实上,所有引入新命名的操作都作用于局部作用域。

Python 命名空间的生命周期

  示例:

  i=1

  def func2():

  i=i+1

  func2();

  #错误:UnboundLocalError: local variable 'i' referenced before assignment

  由于创建命名空间时,python会检查代码并填充局部命名空间。在python运行那行代码之前,就发现了对i的赋值,并把它添加到局部命名空间中。当函数执行时,python解释器认为i在局部命名空间中但没有值,所以会产生错误。

  def func3():

  y=123

  del y

  print(y)

  func3()

  #错误:UnboundLocalError: local variable 'y' referenced before assignment

  #去掉"del y"语句后,运行正常

  以上内容为大家介绍了Python 命名空间的生命周期,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线