一、python的数据类型
1、list 有序、可变,可用的函数有append()、extend()、insert()、remove()、del、pop()、reverse()、sort()、max()、min()
详见菜鸟教程list的操作
2、tuple 有序、不可变,可用的函数有del
3、dict 无序,可变,key唯一,常用的函数有items()、keys()、values()、pop()
4、set 无序,{,}定义
二、python类的3大特性
1、继承
继承是一种创建新类的方式,在python中,新建的类可以继承一个或多个父类,父类又可称为基类或超类,新建的类称为派生类或子类。
子类会“遗传”父类的属性,从而解决代码重用的问题。
class Animal(object):
def run(self):
print('Animal is running...')
class Dog(Animal):
pass
class Cat(Animal):
pass
dog = Dog()
dog.run()
cat = Cat()
cat.run()
2、多态
多态指的是一类事物有多种形态,动物有多种形态:人、狗、猪
3、封装
封装:隐藏对象的属性和实现细节,仅对外提供公共访问方式。
好处:
- 将变化隔离;
- 便于使用;
- 提高复用性;
- 提高安全性;
在python中用双下划线开头的方式将属性隐藏起来(设置成私有的)
三、python的垃圾回收机制
1、引用计数:
在Python中,使用了引用计数这一技术实现内存管理。一个对象被创建完成后就有一个变量指向他,那么就说明他的引用计数为1,以后如果有其他变量指向他,引用计数也会相应增加,如果将一个变量不再执行这个对象,那么这个对象的引用计数减1。如果一个对象没有任何变量指向他,也即引用计数为0,那么这个对象会被Python回收。
2、循环引用:
引用计数这一技术虽然可以在一定程度上解决内存管理的问题。但是还是有不能解决的问题,即循环引用。比如现在有两个对象分别为a和b,a指向了b,b又指向了a,那么他们两的引用计数永远都不会为0。也即永远得不到回收。
3、标记清除和分代回收:
在Python程序中,每次你新创建了一个对象,那么就会将这个对象挂到一个叫做零代链表中(当然这个链表是Python内部的,Python开发者是没法访问到的)。比如现在你在程序中创建四个Person对象,分别叫做p1、p2、p3以及p4,然后p1与p2之间互相引用,并且让p3和p4的引用计数为2。