我有一个到目前为止在程序中定义的变量列表(我是通过dir()命令获得的)。该列表包含字符串,这些字符串就是这些变量的名称。
我想找到其中每个的类型。 type()
命令返回"str"
。从字面上看,这就是它们的意思,但是在将其名称转换为字符串之前,我想要真正的变量类型。
答案 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()
返回当前名称空间的字典(如果不带参数调用)或参数的 字典。