In [1]:
print(isinstance('string', str))


True

In [2]:
print(isinstance(100, str))


False

In [3]:
print(isinstance(100, (int, str)))


True

In [4]:
def is_str(v):
    return isinstance(v, str)

In [5]:
print(is_str('string'))


True

In [6]:
print(is_str(100))


False

In [7]:
print(is_str([0, 1, 2]))


False

In [8]:
def is_str_or_int(v):
    return isinstance(v, (int, str))

In [9]:
print(is_str_or_int('string'))


True

In [10]:
print(is_str_or_int(100))


True

In [11]:
print(is_str_or_int([0, 1, 2]))


False

In [12]:
def type_condition(v):
    if isinstance(v, str):
        print('type is str')
    elif isinstance(v, int):
        print('type is int')
    else:
        print('type is not str or int')

In [13]:
type_condition('string')


type is str

In [14]:
type_condition(100)


type is int

In [15]:
type_condition([0, 1, 2])


type is not str or int

In [16]:
class Base:
    pass

class Derive(Base):
    pass

In [17]:
base = Base()
print(type(base))


<class '__main__.Base'>

In [18]:
derive = Derive()
print(type(derive))


<class '__main__.Derive'>

In [19]:
print(type(derive) is Derive)


True

In [20]:
print(type(derive) is Base)


False

In [21]:
print(isinstance(derive, Derive))


True

In [22]:
print(isinstance(derive, Base))


True

In [23]:
print(type(True))


<class 'bool'>

In [24]:
print(type(True) is bool)


True

In [25]:
print(type(True) is int)


False

In [26]:
print(isinstance(True, bool))


True

In [27]:
print(isinstance(True, int))


True