python的locals()用法实例,返回当前作用域对象名称

当在python的编程实战开发当中,很可能就会因为搞混了某个对象或变量的作用域,继而引发对象undefined的提示。python内置了一个locals()函数,可以用来查询当前作用域中的对象或变量,并以字典键值对的形式返回变量的名称和值。


python的locals()的语法结构

locals() -> dict[str, Any];

  • locals()函数没有参数;
  • “->”符号指定返回值类型为dict字典型数据;

locals()函数实例代码

>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>}

>>> a,b=1,2
>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2}

>>> def _sum1():
...     c=1
...     return c
... 
>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'a': 1, 'b': 2, '_sum1': <function _sum1 at 0x10dxxxef0>}

>>> def _sum2():
...     c=1
...     print(locals())
... 
>>> _sum2()
{'c': 1}

代码解析

如上代码,可分为上个部分来阅读:

  • 当声明了变量a和b之后,调用locals函数,可以发现,dict字典类型的返回值的后面多了两个键值对的值'a':1和'b':2,说明二者在locals()调用的当前作用于之中;
  • 在_sum1()函数之中,又声明了一个c变量,可在函数外调用locals()函数时,返回值中只多了一个以函数名为键,并以函数名的存地址为值的dict元素,并没有函数内的变量c,说明变量c的作用域并不在函数外;
  • 在_sum2()函数之中,声明变量c的同时,调用了locals()函数,并用print()直接输出,得到的是一个{'c': 1},因为这是函数_sum2()作用域内的对象或变量;

全栈后端 / python教程 :


























Copyright © 2022-2024 笨鸟工具 x1y1z1.com All Rights Reserved.