因为Python3.0与Python2.x在语法等方面还是有一定的差别,而我的系统中装的是Python2.7,因此笔记基本已Python2.7版本为主。。。。


Python 中的变量是动态的,而非静态的。意思就是说,在变量赋值之前无需进行变量类型的定义,赋给变量什么类型,它就是什么类型的。事实上,在Python中,对 象是通过引用传递的。在赋值时,是将该对象的引用(而非值)传递给这个变量。Python的赋值并不会返回值,因此类似y=(x=1)是非法的,而 y=x=1则合法。至于引用传递这个问题,之后我会在实例中在慢慢整理。

Python 使用对象模型来存储数据,构造任何类型的值都是一个对象。Python对象拥有三个特性:身份、类型和值。身份可以认为是该对象的内存地址;类型可用 type()查看。而在Python中类型也是对象。举个例子来说:type(123)结果是<type'int'>,type(int)结 果为<type'type'>,123的类型是int,而int的类型是type,所有对象的类型都是type;值:即是值

Python对象包括数字,字符串,列表,元组,字典,还有一些其他的如None,函数,模块,类等。在Python2.2中类型和 类统一,类就是类型,实例是对应类型的对象,这个问题有点复杂,还牵扯到经典类和新式类,在之后谈论类的时候,我再整理。

关于引用传递这个问题,我举一个例子:a=1.1,b=1.1。如果做判断,a==b为True;a is b为False。a==b比较的是变量的数值,而a is b比较的是变量的内存地址。a指向一个值为1.1的对象,b也指向一个值为1.1的对象,但两个对象的内存地址是不同的。可以把这个引用传递理解为指针。 不过Python会缓存简单整型,这会造成我们认为Python应该创建新对象时,却没有创建新对象的假象。例如:a=1,b=1,a is b为True。

 str()(或__str__)对用户友好,repr()(或__repr__)对Python友好。

 关于Python对象类型的分类:按具不具有可变性分为:不可变类型(数字,字符串,元组),可变类型(列表,字典)。按是否有序分为序列 (字符串,列表,元组)和映射(字典)。不可变性指在创建后不能原地改变,但可以通过建立一个新的对象重新赋值。序列指能进行切片操作。

  哦,对了,Python中无指针类型。