##模块
# 1.什么是模块
# python一个py文件就是一个模块
# 模块分为系统模块和自定义模块
# 2.怎么使用模块 - 怎么在一个模块中去使用另外一个模块中的内容
# 注意:1如果一个模块中的内容想要能够被别的模块使用,那么这个模块的名字必须符合变量名的要求
# 注意:2符合命名要求的模块中,只有全局变量可以被别的模块使用
# 3.怎么导入模块 - 要使用别的模块中的内容,必须先导入
# 1)import 模块名 - 导入指定模块,导入后可以通过"模块名.xxx"的方式去使用模块中所有的全局变量
# 导入方式1:
# import test
# print(test.a)
# print(test.x)
# test.wudi()
# 2)from 模块名 import 变量名1,变量名2,....- 导入指定模块,导入后可以直接使用import后面的所有全局变量
# from test import a,wudi,x
# print(a)
# print(x)
# wudi()
# 3)from 模块名 import * 导入指定模块,导入后可以直接使用模块中所有的全局变量
# from test import *
# print(a)
# print(x)
# wudi()
# 4)impoer 模块名 as 新模块名 - 导入模块的时候给模块重命名
# 5) from 模块名 import 变量1 as 新变量名1,变量名2,... - 重新指定变量命名
# 注意:1.被逼无奈2.单纯不喜欢原来的名字
# 模块重命名
# test=100
# import test as test1
# print(test1.a,test1.x)
# test1.wudi()
# 变量重名名
# from test import a,x as t_x
# print(t_x)
# print(a)
# 导入模块原理
# 1.导入原理
# 当代码执行到导入模块的操作的时候,系统就会自动进入被导入的模块,将模块中的代码全部执行一遍
# import和from-import在导入模块的时候会自动检测模块是否重复导入,如果已经导入过,不会重复导入
# import test
# import test
#
# print('其它语法')
# 2.阻止导入
# from ke import download
# download('哈利波特1')
# 模块和异常
# 异常捕获
# 1.异常
# 程序在执行过程中报错,这个程序出现异常(错误==异常)
# 异常的出现会终止程序的运行
# print('+++++++')
# print('abc'[5])
# print('-------')
# print('=======')
# 2.捕获异常 - 让程序在出现异常的时候不报错,并且可以继续执行
# 捕获异常的使用场景:明明知道某个位置可能会出现异常,但是又无法(不愿意)通过修改代码来避免异常,
# 还想在异常出现的时候程序可以继续执行,就可以对这段代码进行异常捕获
# 语法: --- 捕获所有异常
# 结构1:
# try:
# 代码段1(需要捕获异常的代码段)
# exceept:
# 代码段2(捕获到异常后会执行的代码)
# else:
# 代码段3(没有捕获到异常会执行的代码)
# 其他代码
# 执行过程:先执行代码段1,如果代码段1没有异常直接执行
# input('请输入姓名:')
# age=int(input('请输入年龄:'))
# try:
# age=int(input('请输入年龄'))
# except:
# print('年龄输入有误')
# while True:
# try:
# age = int(input('请输入年龄'))
# print('输入正确')
# break
# except:
# print('输入有误')
# 语法2: -- 捕获特定异常
# try:
# 代码段1(捕获异常的代码)
# except 异常类型:
# 代码段2(捕获到指定异常后执行的代码)
# try:
# age=int(input('请输入年龄:'))
# print(age+'10')
# except:
# print('年龄输入有误')
# 语法3: - 多种异常类型捕获 ,不同类型的异常做相同处理
# try:
# 代码段1(捕获异常的代码)
# except (异常类型1,异常类型2):
# 代码段2(捕获到指定异常后执行的代码)
# 语法4 - 同时捕获多种异常,根据不同类型的异常做不同的处理
# try:
# 代码段1(捕获异常的代码)
# except 异常类型1:
# 代码段22(捕获到指定异常后执行的代码)
# except 异常类型1:
# 代码段22(捕获到指定异常后执行的代码)
# 3.关键字:finally
# try:
# 代码段1(捕获异常的代码)
# except (异常类型1,异常类型2):
# 代码段2(捕获到指定异常后执行的代码)
# finally:
# 代码段3(无论前面的代码怎么执行的,代码段3都会执行)
# try:
# print('abv'[5])
# except KeyError:
# print('出现键错误异常')
# finally:
# print('finally')
#
# print('其他语句')