a = 5
type(a) 
# int
a = 'foo'
type(a) 
# str'5'+ 5
# 会出现错误,字符类型不能和数值类型相加。
a = 4
b = 2.5
print('a is {0}, b is {1}'.format(type(a), type(b)))
# a is <class 'int'>, b is <class 'float'>isinstance()函数检查对象是否是某个类型的实例。a = 1; b = 1.2
isinstance(a, int)
#True
isinstance(b, float)
#True
isinstance(a, bool)
#FalsePython的对象通常都有属性(其他存储在对象内部的Python对象)和方法(对象的附属函数可以访问对象的内部数据)。
obj.attribute_name访问属性和方法a = 'str'
dir(a)
# 查看a对象的属性和方法getattr()通过名字访问属性和方法。getattr(a, 'format')
# <function str.format>访问对象的名字通常称作反射。
不关心对象的类型,只关心对象是否有过某些方法或用途。通常被称为
鸭子类型。走起路来像鸭子,叫起来像鸭子,那么它就是鸭子。
检验对象是否是列表(或是numpy数组),如果不是的话,将其转变成列表
def isiterable(obj):
  try:
    iter(obj)
    return True
  except TypeError:
    return False
if not isinstance(x, list) and isiterable(x):
  x = list(x)is 方法,is not可以判断两个对象是不同的。is和is not可以判断一个变量是否为Nonea = [1,2,3]
b = a  
c = list(a) # 新创建一个list
a is b
# True
a is not c
# True
a == c
# True
d = None
d is None
# True原文:https://www.cnblogs.com/mephisto03/p/12293220.html