一个字符串代表变量名,如何找到它的类型?

时间:2019-03-17 21:57:26

标签: python python-3.x

我有一个到目前为止在程序中定义的变量列表(我是通过dir()命令获得的)。该列表包含字符串,这些字符串就是这些变量的名称。

我想找到其中每个的类型。 type()命令返回"str"。从字面上看,这就是它们的意思,但是在将其名称转换为字符串之前,我想要真正的变量类型。

2 个答案:

答案 0 :(得分:1)

您可以这样做:

>>> b = 3
>>> for var in dir():
    print(var, type(vars()[var]))


__annotations__ <class 'dict'>
__builtins__ <class 'module'>
__doc__ <class 'NoneType'>
__loader__ <class 'type'>
__name__ <class 'str'>
__package__ <class 'NoneType'>
__spec__ <class 'NoneType'>
b <class 'int'>
var <class 'str'>

答案 1 :(得分:0)

如果这些变量是局部变量,则可以使用locals()['name']vars()['name']来访问它们(有关它们之间的区别,请参见“更多说明”部分)

对于全局变量,请使用globals()['name']

a = 'some string'
b = 123
c = 1.234
d = [1, 2, 3, 4]

print(type(locals()['a']))
print(type(locals()['b']))
print(type(locals()['c']))
print(type(locals()['d']))

输出

<class 'str'>
<class 'int'>
<class 'float'>
<class 'list'>

更多说明:

  • globals() 始终返回 module 名称空间的字典
  • locals() 始终返回当前名称空间的 a 字典
  • vars()返回当前名称空间的字典(如果不带参数调用)或参数的 字典。