是否有任何简单的方法来将python中的type()函数的输出转换为字符串?

问题描述:

我想写一个函数,猜测一个变量的类型表示为一个字符串。 因此,如果我有某种类型的变量,那么为了找出它是什么类型的变量,我可以使用python的type()函数,如type(var)。但我如何简洁和pythonicaly将此函数的输出转换为一个字符串,以便在整数情况下输出为'int',在bool等情况下为'bool'等。 我看到的唯一方法是可以这是否首先使用str(type(var)),然后使用正则表达式去除指示类型的部分。是否有任何简单的方法来将python中的type()函数的输出转换为字符串?

所以基本上如下,我可以写一个简单的类型猜测蟒蛇功能:

import ast 
import re 


def guess_type(var): 
    return re.findall('\w+',str(type(ast.literal_eval(var))))[1] 

其中var是str类型。但我的问题是“是否有更简单的方法来获得相同的结果?”

说到性能:

In [156]: %timeit guess_type 
10000000 loops, best of 3: 28.1 ns per loop. 
+2

你为什么要将类型转换为字符串?这里的总体目标是什么?如果你想检查类型,我不明白为什么你需要正则表达式。 – roganjosh

+0

我该如何检查'[1,2,3]'的类型? – Foobard

+0

它会告诉你它是一个列表...编辑等待,你有一个列表的字符串表示?所以使用'ast.literal_eval'并得到那个类型 – roganjosh

>>> type(0).__name__ 
'int' 
>>> type('').__name__ 
'str' 
>>> type({}).__name__ 
'dict' 
+0

这就是我一直在寻找的!万分感谢! – Foobard

什么是你真正想干什么?如果你只是想获得该对象的类的名称,你可以使用:

type(var).__name__ 

这会给你的类对象var的名称。