python中怎样查看已加载的命名空间中所有变量和函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python中怎样查看已加载的命名空间中所有变量和函数相关的知识,希望对你有一定的参考价值。

dir()
不加任何参数,便可查看命名空间内所有的变量名、函数名以及导入的模块的名称
返回的是一个列表
参考技术A globals()和locals()函数的返回值是一个字典,包含命名空间的所有变量名和对应的值(比如字符串、字典、列表、函数、模块),globals()是全局命名空间,locals()是局部命名空间,全局指这个模块,局部可以是函数、类、闭包。调用dir()函数传参或者不传,它的返回值就是这俩函数返回值的键组成的列表。 参考技术B 示例:
import math
help(math)
参考技术C Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
f()
File "<pyshell#6>", line 2, in f
a = a+1
UnboundLocalError: local variable 'a' referenced before assignment
首先,在f()这个函数里,a是个局部变量。原因:没加global a这一句。
然后,函数内容一上来就调用了a本身的值。对于python来说,它这时还不知道a是什么呢。
所以,这个错误的意思是说,a作为一个局部变量,没有先声明数值就被引用了,无从查找其值。本回答被提问者和网友采纳

python 函数进阶

1.命名空间
1.全局命名空间。储存函数外的变量的时,将变量名和值的关系(id)储存在内存中,这个叫做全局命名空间,

2.局部命名空间。函数的时候,他会在内存中开辟一个临时民称空间,存放函数体内的所有变量和值的关系
随着函数的执行完毕,临时空间关闭,函数运用的时候开辟的就是局部命名空间

3.内置名称空间,所有内置函数等储存的地方

三个空间的加载顺序:
内置名称空间 ---》全局名称空间——》(函数执行的时候)加载局部名称空间
取值顺序:
(函数执行时)局部命名空间--》全局命名空间---》内置加载空间

4.全局作用域:包含全局命名空间,内置空间的变量有效作用范围
局部作用域:在函数打开时,在函数体内部有效的变量作用范围

2.函数的嵌套:
  在函数中套入一个函数时候需要考虑全局变量和局部变量的关系,
def ok():
    def rk():
        print(‘22222‘)
    print(‘11111‘)
    return rk()   #当没有return rk()的时候函数内的函数不会执行

ok()
##############################################################
def ok():
  def lk():
    def pl():
      print(‘nihao ‘)
    return pl()
  print(lk())
  
输出结果:
nihao
None
None
  

 



3.globals() #全局名称空间:查询所有全局变量
locals() #局部名称空间:查询所有局部变量


4.关键字:
global:1.在局部空间内,声明一个全局变量
2.在局部空间内,改变一个全局变量

nonlocal:1.使得全局变量不得修改
2.能够修改局部变量,在局部变量中,修改其一下的全部变量












































以上是关于python中怎样查看已加载的命名空间中所有变量和函数的主要内容,如果未能解决你的问题,请参考以下文章

Python:将字典中的变量加载到命名空间中

命名空间

python 函数进阶

python第十课

函数补充知识

函数命名空间