在Python里面一切都是对象
一个Python对象的组成:
1)身份:没有用一个对象都有一个身份表示自己,实用内建函数的id可以到骚这个标识具体的值
2)类型:对象的类型据定了对象保存什么样的值,可以进行什么样的操作,以及遵守什么样的规则,实用内建函数type可以查看对象的类型,他的本质就是把对象分类。
3)值:表示对象中具体分保存内容,有些对象的值可以修改,有些对象的值不可以修改,称为这个对象的“可变性”
注意:Python中任意类型的值其实都是一个对象(判定是不是它对象,就会尝试用id取一下值,看看能不能取到值)
举例:10这样一个字面常量,也是一个对象,一个字符串,也是对象,,一个函数也是对象,一个类型,即type函数的返回值也是一个对象,一个模块也是一个对象。
理解对象和引用
对象的创建过程
a=1
b=2
b=1
Python赋值过程
1)当我们在解释器中输入a=1时,就有一个Integer class的类被唤醒(找到了整数对象的图纸)
2)根据 Integer class 这个图纸,在内存中开辟一端空间(得到了对象的id ),并填充如对象的类型和值,此时对象已经准备好了
3)此时,如果想要访问对象,就需要拿到对象的钥匙,而这个对象的钥匙就是休息名a,通过变量名a就可以访问该对象
4)b=2时,又创建了一个对象b ,同样可以通过变量名b访问该对象
5)b=1时,此时b拿到了a对象的钥匙,所以b也可以访问a对象
总结:
1.Python中的变量名只是一个访问对象的”钥匙“,多个不同的变量 ,可以访问访问相同的对象,因此我们把这种变量名也叫对象的“引用”
’为什么Python的变量是这样的?
1)空间考虑:比如一个数字2,在Python中只有一个这样的数字,而C语言或其他语言中可能还有很多个2
2)时间考虑 :比如a=b这样的复制,只修改了一下贴标签的位置,不需要对对象进行深浅拷贝,这主要是由于Python的GC绝对的
理解对象和类型:
1.有序对象是“相似”的,所以我们把相似的对象归类,比如把整数归为一类,把浮点数归为一类,把字符串归为一类
2.相同类型的对象,不需要有相同的操作,比如,所有的整数对象,都可以进行加减乘除操作,所有的字符都可以进行切片操作
3.Python是一种动态强类型编程语言
4.动态:是指运行时进行遍历类型检查,
强类型:是指检查严格,并且“偏向于”不允许隐式转换
注意:类似的, C语⾔是⼀种静态弱类型语⾔. Java的类型检查更为严格, ⼀般认为是静态强类型, ⽽Javascript则是动
态弱类型
标准类型:
整型,浮点型,复数型,布尔型,字符串,列表,元组,字典
其他内建类型:
类型,Null对象(None),⽂件,函数,模块,类
类型的类型:
了解None:
1.Python有一个特殊类型,称为NoneType,这个类型只有一个对象,叫做None
2.NoneType类似于语言的void,
3.None类似于C语言的Null
4.None这个对象没有什么有用的属性,他的布尔值为False
内建类型的布尔值:
所有的标准对象,均可以用于布尔测试到(if条件中)
注意:处理一下几种,其他的内建对象的返回值都是True
None,False,“”(空字符串),()空 元组,{}空字典,所有值 为0的数字(0,0.0,0.0+0.0)
对象值比较
1.所有内建类型对象都可以进行比较操作,条件是双方必须是相同类型
2.比较结果是True或False
3.比较操作符:==,!=,<,>,<=,>=
对象类型比较
1.两个对象类型的比较,可以使用内建函数type
a=1
print type(a)=type(1)
2.刚刚对象的比价调用了两次type函数,也可以调用一次type函数
import types
a=1
print type(a)==types.IntType
3.还可以使用内建函数 isinstance来判断
a[]
print isinstance(a,list)
a=1;
print isinstance(a,type(100))
类型函数工厂
int()内建函数,可以把字符串转为一个整数,其实调用的就是int()之后生成了一个整数类型的对象,我们把这种函数称为“工厂函数”
类似的还有:
int(),float(),complex()
str(),uncode()
list(),tuple()
dict()
bool()
等等....