什么是模块?
包
系统模块:
系统中有个sys模块
根据sys模块的path属性方法,可以获取模块的位置。
import sys
当我们导入模块的时候,会从上面目录一次查找。
我们大部分模块都在 /usr/lib64/python2.*/ 目录下能够找到
比如:
os模块
string模块
也可以自定义python的path(模块目录)
创建目录
将目录加入sys.path
查看:
另外一种方法,修改系统的环境变量:
执行使环境变量生效:
查看:
验证:
我们自己写的脚本都可以作为模块来使用:
脚本名字一般都和脚本内容联系比较紧密
vim wc.py
导入模块wc
执行
使用模块中的函数:
修改 wc.py 文件
结果:
表示执行这个模块的时候,是在执行wc这个模块。
执行2.py的时候:
main变成模块名了
所以,我们改写wc.py
表示如果名字是main的话,调用wordCount()函数。
怎么做包?
在目录下创建空文件
有这个文件后,包的名字就是目录的名字
使用包的方法:
另外一种方法:
使用:
导入包的 wordCount 方法并执行:
导入的时候顺便给函数起个名字:
总结:
面向对象的介绍
类和对象:
面向对象的思想:
python类的定义
类就是封装
如果类的名称是由多个单词组成,类的首字母和其他单词的首字母都是大写
定义一个类:
类添加动态方法:
self 表示类的自己,或者类的本身。
类的属性
对象的创建
类的属性
执行
要想调用私有属性,方法如下,这种方法一般在测试的时候使用,正式情况不用:
私有属性的用途就是不被外部调用,所以这种方法只用于代码测试。
或者把私有属性写入方法里就可以获取到私有属性的值了:
各种调用方法,包含一些内置方法的调用:
结果:
类的方法:
私有方法:__talk
通过类去访问方法:
占用的资源很少。
静态方法:
参数里面没有self
装饰器
python 类的内置方法(内部类):
创建一个内部类:
内部类的实例化方法:
举例:
第二种方法调用内部类:
魔术方法(内置方法):
我们把这些双下滑下开头和结尾的方法,叫类的内置方法,或者叫魔术方法。
创建内置方法:__str__
直接这样输出:
类直接调用__str__内置方法的值。
构造函数:
__init__ 用于初始化的内部状态
通过对象访问和 类访问:
初始化函数里面不仅可以放一些属性,还可以放一些方法:
析构函数:
用来释放资源的函数
打开链接、socket、文件,都可以通过__del__将其清除。
通常在脚本的最后执行这个方法:
在__del__里面把他关掉:
python的垃圾回收机制
使用:
import gc
结果:如果是0的话,表示没有可回收的。
类的继承
继承最大的好处,代码重用
传统格式:
子类只要这么去写,就能够继承父类,父类的方法,子类一样可以执行。
继承父类:super格式
通过super这个函数继承父类
查看说明
用法:
这样继承好后,子类就能使用父类中的共有属性和公有方法了。
多重继承
注意第三条:
当父类中出现多个自定义的__init__方法时,多重继承只执行第一个类的__init__方法,其他的不执行。