2009-12-13 49 views

回答

8
if isinstance(x, basestring): 
    # a string 
else: 
    try: it = iter(x) 
    except TypeError: 
     # not an iterable 
    else: 
     # iterable (tuple, list, etc) 

@Alex Martelli's answer詳細介紹了爲什麼你應該更喜歡上面的樣式當你與類型在Python工作(感謝@Mike Hordecki的鏈接)。

+3

+1,'isinstance(x,str)'和'type(x)是str'都是錯誤的,因爲它們不處理unicode。另外,因爲它處理子類,所以'isinstance()'優於'type()'。 – 2009-12-13 11:52:28

5
isinstance(x, str) 
isinstance(x, tuple) 

一般來說:

isinstance(variable, type) 

檢查variable是否是type(或其亞型)的實例(docs)。

PS。不要忘記,字符串也可以在unicode(在這種情況下爲isinstance(x, unicode))(或isinstance(x, basestring)(感謝,J.F.Sebastian!),它檢查strunicode)。

+0

的STR對Unicode的區別在Python 3消失 - Unicode和STR現在只是海峽。 – PaulMcG 2009-12-13 16:15:49

0

使用isinstance(),一般語法是:

if isinstance(var, type): 
    # do something