day13----总结-异常和模块

day13-异常和模块


  • 1.异常

程序运行时程序报错,又叫程序出现异常
当执行程序的时候如果出现异常,出现异常的线程直接奔溃,不会执行线程后面的其他代码

  • 2.异常捕获
1)语法1:可以捕获任何类型的异常
try:         --关键字,固定写法
    代码块1     -- 和try保持缩进的一条或多条语句
except:       --关键字,固定写法
    代码块2     --和try保持缩进的一条或多条语句
其他语句

说明:
代码块1   -- 需要捕获异常的代码
代码块2    -- 异常发生后执行的代码

执行过程:先执行代码块1,如果在执行代码块1的时候出现异常,程序不会崩溃,直接执行代码块2,然后在执行后面的其他语句;如果在执行代码块1的时候没有出现异常,代码块2不会执行,直接执行其他语句。
2)语法2:捕获制定异常
try:
    代码块1
except 异常类型:
    代码块2
其他语句

执行过程:先执行代码块1,如果出现异常,检查异常类型是否和except后面的异常类型一致,如果一致,程序不崩溃,直接执行代码块2,如果不一致,程序崩溃;
如果执行代码块1的时候没有出现异常,不执行代码块2,直接执行后面的其他语句
3)语法3:同时捕获指定的多种异常
try:
    代码块1
except (异常类型1,异常类型2,...):
    代码块2
其他语句
4)语法4:同时捕获多个异常
try:
    代码块1
except 异常类型1:
    代码块11
except 异常类型2:
    代码块22
except 异常类型3:
    代码块33
...
其他语句
  • 3.finally关键字
前面四种捕获异常的结构最后面都可以加一个finally
注意:finally后面的语句一定会执行

比如:
try:
    代码块1
except:
    代码块2
finally:
    代码块3
其他代码
  • 4.抛出异常
主动让程序崩溃

语法:
raise 异常类型

说明:异常类型必须是Exception的子类

模块的使用

  • 1.什么是模块
python中一个py文件就是一个模块
  • 2.怎么在一个模块中使用另一个模块中的内容
如果要在一个模块中使用另一个模块必须先导入模块

1)语法1:
a.import 模块名    -  导入指定模块,导入后可以在当前模块中使用模块中所有的全局变量
                以'模块名.全局变量名'的方式去使用

b.from 模块名 import 变量名1,变量名2...  --  只能使用导入的import后面的指定变量
                                        倒入后指定的全局变量可以直接使用,不用在前面加'模块名.'
                                        
c.from 模块名 import *   -- 导入指定模块,导入后可以在当前模块中使用模块中所有的全局变量
                        倒入后指定的全局变量可以直接使用,不用在前面加'模块名.'
                        

d.import 模块名 as 新模块名  - 模块名给一个新的名字,代码中使用新名字去使用模块中的功能

e.from 模块名 import 变量名1 as 新变量名1,变量名2,...

  • 3.导入模块的原理
当执行导入模块的代码时候,会直接执行被导入的模块中的所有代码

1)重复导入问题
import 在导入模块的时候会自动检查这个模块之前是否已经导入过,来避免一个模块重复导入

2)阻止模块中的内容被其他模块导入
将不需要的其他模块执行的语句写入"if __name__ == '__main__':"对应的语句中

包的使用

  • 1.什么是包
一个带有'__init__.py'文件的文件夹就是包
# 1.直接导入包   -- 只执行__init__.py文件
# import animal


# 2.从包中导入指定的模块
# from animal import dog

# 3.从包中的模块导入变量
# from animal.dog import d


系统常用模块

  • 1.加密 ----hashlib
    hashlib是python3.x中提供的一个hash加密模块;支持目前主流的加密算法:sha256,md5等
hash加密特点:
a.相同的数据采用同一个加密算法,保障加密结果一样
b.通过加密后的数据不能反向获取原数据
c.保证采用同样的加密算法,不管原数据的大小是多少,加密后的数据长度是一样的

  • 2.加密步骤;
# 1)根据加密算法创建一个hash对象
pw = input('输入密码:')
# hash = hashlib.md5()
hash = hashlib.sha256()

# 2)对数据进行加密
# hash对象.update(加密数据)    --  加密数据必须是二进制
# 字符串转二进制:1.字符串.encode(encoding='utf-8')   2.bytes(字符串,encoding='utf-8')
hash.update(pw.encode())

# 3.根据hash对象获取加密后的数据(字符串类型)
result = hash.hexdigest()
print(result)
  • 2.math模块
# math模块的使用

# 1.ceil(x)   -- 取大于等于x的最小整数值,如果x是一个整数,返回x

print(math.ceil(4.3))   # 5
print(math.ceil(-2.1))   # -2
print(math.ceil(3))   # 3

# 2.cos(x)   -- 求x的余弦,x必须是弧度
print(math.cos(math.pi/3))   # 0.5000000000000001


# 3.degrees(x)   - 将x从弧度转换成角度
print(math.degrees(math.pi/4))    # 45.0

# 4.fabs(x)    -  返回x的绝对值
print(math.fabs(-100))    # 100.0
print(math.fabs(120), math.fabs(-0.3))    # 120.0   0.3

# 5.factorial(x)    - 返回x的阶乘的值
print(math.factorial(5))    # 120
print(math.factorial(10))   # 3628800

# 6.fsum(iter)  - 对迭代器中的每个元素进行求和操作
print(math.fsum((1, 2, 3, 5)))      # 11.0
print(math.fsum([1, 2, 3, 6, 5, 4]))   # 21.0

# 7.gcd(x, y)    - 返回x和y的最大公约数
print(math.gcd(10, 9))    # 1
print(math.gcd(8, 6))    # 2

# 9.pow(x, y)    -  返回x的y次方  (x**y)
print(math.pow(10, 3))   # 1000.0

# 10.sqrt(x)    -  x的平方根
print(math.sqrt(100))   # 10.0

# 11.trunc(x)    -  返回x的整数部分
print(math.trunc(22.315))  # 22
print(math.trunc(-23.012))  # 23


  • 3.time模块
# 1.time.localtime()  -  将一个时间戳转换成当前时区的时间
print(time.localtime())  # time.struct_time(tm_year=2019, tm_mon=8, tm_mday=7, tm_hour=20, tm_min=34, tm_sec=3, tm_wday=2, tm_yday=219, tm_isdst=0)

# 2.time.gmtime()  -  和time.locatime()效果一样
print(time.gmtime())

# 3.time.time()   --  返回当前时间的时间戳
print(time.time())   # 1565181463.7705276

# 4.time.sleep()   -  线程推迟指定时间运行,单位为秒
for x in range(6):
    print(x)
    time.sleep(1)

# 5.time.clock()    -- 第一次调用,返回的是进程运行的实际时间。
#                   而第二次之后的调用是自第一次调用以后到现在的运行时间。
print('时间1:%s' % time.clock())
time.sleep(2)
print('时间2:%s' % time.clock())
time.sleep(2)
print('时间3:%s' % time.clock())

# 6.time.clime()    -  把一个时间戳转换成形式:'Sun Jun 20 23:21:05 1993'。
print(time.ctime(time.time()))    # Wed Aug  7 20:50:17 2019
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 一.异常 1.异常 运行程序的时候程序报错, 又叫程序出现异常当执行程序的时候如果出现异常, 出现异常的线程会直接...
    风月辞寒阅读 1,274评论 0 0
  • 1.异常 运行程序的时候出现报错,又叫程序出现异常当执行程序的时候如果出现异常,出现异常的线程会直接崩溃,不再执行...
    Ed97001阅读 1,072评论 0 0
  • 一、异常 1.异常 运行程序的时候程序报错,又叫程序出现异常 当执行程序的时候如果出现异常,出现异常的线程会直接奔...
    LI3e0阅读 1,761评论 0 0
  • 异常 1.什么是异常 运行程序的时候程序报错,又叫程序出现异常当执行程序的时候,如果出现异常,出现异常的线程会直接...
    举颗凤梨阅读 2,682评论 0 4
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 13,795评论 1 32