Python数据分析——基础01
数据类型
- Python中的对象引用不包含附属类型。
a = 5
type(a)
# int
a = 'foo'
type(a)
# str
- Python是强类型语言,每个对象都有明确的类型(或类)。类型转换只会发生在特定的情况下。
'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)
#False
属性和方法
Python的对象通常都有属性(其他存储在对象内部的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
可以判断一个变量是否为None
a = [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
可变与不可变对象
- Python中列表、字典、numpy数组和用户定义的类型(类),都是可变的。这些对象或包含的值是可以被修改的。
- Python中的字符串和元组是不可以变的。