2017-09-04 25 views
0

我想寫一個函數,猜測一個變量的類型表示爲一個字符串。 因此,如果我有某種類型的變量,那麼爲了找出它是什麼類型的變量,我可以使用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

回答

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

這就是我一直在尋找的!萬分感謝! – Foobard

3

什麼是你真正想幹什麼?如果你只是想獲得該對象的類的名稱,你可以使用:

type(var).__name__ 

這會給你的類對象var的名稱。

相關問題