模块
模块是包含python代码的文件
模块可以增加代码重复利用的方式
当作命名空间使用,避免命名冲突
定义模块
模块就是普通的py文件,所以任何代码都可以直接书写
不过根据模块的规范,最好在模块中编写一下内容
函数(单一功能)
类(相似功能的组合或者类似业务模块)
测试代码
0ss.py
class Student():
def __init__(self, name = "wanglaji", age = 19):
self.name = name
self.age = age
def say(self):
print("My name is {0}".format(self.name))
if __name__ =='__main__': # 可以有效避免代码被导入时被动执行的问题
def sayHello():
print("欢迎学习python")
模块使用方法
直接导入,如果模块名以数字开头则需要用importlib包导入
import 模块 as 别名
选择性导入
from 模块 import 选择导入的方法
1 #以0ss.py为模块
2 '''import importlib
3 aa = importlib.import_module("0ss")
4 stu = aa.Student("xiaogege", 20)
5 stu = sayHello()
6 stu = say()'''
模块的搜索路径
加载模块的时候,系统会在哪些地方寻找模块
系统默认的路径
import sys
sys.path 属性可以获得路径
添加路径:sys,path.append(路径)
1 import sys
2 print(type(sys.path))
3 print(sys.path)
4 for p in sys.path:
5 print(p)
模块的加载顺序
1. 先搜索内存中已经加载好的模块
2. 搜索python中的内置模块
3. 搜索sys.path路径
包
包是一种组织管理代码的方式,包里面存放的是模块
将模块包含在一起的文件夹就是包
自定义包的结构
|---包
|---|--- __init__.py 包的标志性文件
|---|--- 模块1
|---|--- 模块2
|---|--- 子包(子文件夹)
|---|---|--- __init__.py 包的标志性文件
|---|---|--- 子包模块1
|---|---|--- 子包模块2
包的导入
直接导入:improt package name
设置别名:import package name as p
from ... import 导入方法
__all__用法
__all__=['模块1', '模块2', '模块3'....]
在使用form package import * 的时候 * 可以导入的内容
__init__.py如果文件为空,或者没有__all__那么只导入__init__
__init__.py中如果设置了__all__ 的值,那么则按照__all__指定的子包或者模块进行导入
异常处理
python中,异常是一个类,可以处理和使用
不能保证程序永远正确运行,但是要保证程序在最坏的情况下能够得到妥善的处理
try:
尝试实现某个操作,如果没异常则正常完成
如果有异常,将异常代码块抛出并尝试解决
except 异常类型1:
解决方案1,用于尝试处理异常
except 异常类型2:
解决方案2,用于尝试处理异常
else:
如果没有出现任何异常,将会执行此处代码
except(异常类型1, 异常类型2...)
针对多个异常使用相同的处理方式
finally:
无论有没有异常都要执行的代码
1 try:
2 num = int(input("please input your number:")) # 尝试执行代码
3 rst = 100/num
4 print("计算结果是:{0}".format(rst))
5 except ZeroDivisionError as e: # 异常实例化e
6 print("输入错误") # 出现错误则执行此代码块
7 print(e) # 打印出实例e
8 exit()
9 except Exception as e: # 任何异常都拦截到这里
10 print("不知道哪错了,反正就是错了")
11 print(e)
用户手动引发异常
当用户需要引发一个异常的时候,可以使用raise 关键字来引发异常
1 try:
2 print("I Love Python")
3 # 手动引发一个异常
4 raise ValueError
5 print("mmp")
6 except NameError as e:
7 pritn(e)
8 except ValueError as e:
9 pritn(e)
10 except Exception as e:
11 print(e)
12 finally:
13 print("有没有异常反正都执行")
关于自定义异常
raise异常推荐自定义异常
自定义异常的时候一般包括以下内容:
自定义发生异常的异常代码
自定义发生异常后的问题提示
自定义发生异常的行数
1 class OwnError(NameError):
2 print("自定义异常的代码块")