python 作用域与命名空间

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

作用域

作用域分为:

  • 全局作用域
  • 局部作用域
在函数内部的作用域叫做局部作用域,局部作用域中的变量叫做局部变量
非函数内部的作用域叫做全局作用域,全局作用域中的变量叫做全局变量
局部作用域可以使用全局变量,全局变量不能试用局部变量
变量的使用规则: 从内向外,找到后返回

  • 函数作用域中命名全局变量global
  1. def fn():
  2.         global 变量 # 现在改变量为全局变量
  3. # 注意:不可以在函数中先使用一个全局变量后在用该变量命名局部变量
  4. 报错:
  5.     a = 1
  6.     def fn():
  7.         print(a) # 全局变量
  8.         a += 1 # 这个a是局部变量
  9.         
复制代码

  • 在函数或其他作用域中使用或修改上一层(非全局)变量nonlocal
  1. a = 1
  2. def fn1():
  3.     a = 2
  4.     def fn2():
  5.         a = 3  # a = 4
  6.         def fn3():
  7.             nonlocal a
  8.             a = 4
  9. 报错:
  10.     b = 1
  11.     def fn():
  12.         nonlocal b            
复制代码
命名空间
  1. 命名空间: python中的所有变量都被存储在命名空间内,每个作用域都有一个命名空间
  2.                 命名空间本质就是一个字典,是用来存储变量的字典
  3. locals():获得挡前作用域的命名空间
复制代码



免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

惊雷无声

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表