# 导入一个模块本质上就是执行了一个py文件
'''
导入模块的方式:
import模块名
语法:
import 模块名
import 模块名1,模块名2...
模块名.功能名()
'''
# 导入random模块
# time处理时间的模块
import random, time
# 注意:没有用的时候是灰色的,用了才有颜色
# 使用模块中的函数,语法:模块名.功能名()
# randint()的作用:实现随机生成数字区间的功能
num = random.randint(1, 5)
print(num)
# sleep() 休眠
# time.sleep(2) # 休眠2秒
print('Ustinian')
# 需求:使用math模块下的一个方法sqrt函数进行开平方计算
import math # 导入数学计算的一个模块
# 使用方式:模块名.功能名()
print(math.sqrt(9)) # 返回浮点数
# 导入方式:from 模块名 import 功能名
from math import sqrt
# 使用方式:功能名()
print(sqrt(9))
# 在同一个模块中导入多个函数: from 模块名 import 功能1,功能2,功能3
from math import sqrt, fabs, fmod
# fabs:返回数字的绝对值 fmod:返回余数
print(fabs(-3))
print(fmod(2, 5))
# from 模块名 import *
# from math import *
# *把模块中所有的方法一次性导入
# import 模块名 导入全部 --> 每次使用模块中的函数都要模块名.功能名()
# import 模块名 as 别名 给模块起别名
import math as shuxue
print(shuxue.fabs(-1))
# 注意:定义模块别名后,不能使用原来的模块名,否则报错
# from 模块名 import 功能名 as 别名 给功能起别名
from math import fabs as jueduizhi
print(jueduizhi(-6))
from module1 import testA, name
# 导入自定义模块,模块名下面有红色的波浪线,执行没有问题
# 解决办法:右边文件所在的目录--》mark directory as--》source Root
print(testA(2, 2))
print(name)
# if __name__ == "__main__":
# 1、作用:用来控制py文件在不同的应用场景下执行不同的逻辑
# 2、系统变量__name__
# 1、如果是在当前文件打印,值是__main__
# 2、如果被其他文件导入,值是该模块的模块名
# 3、相当于是python模拟的程序入口
# 包的使用
# import 包名
import pac01
# from pac01 import *
# register.reg()
# login.log()
from pac01 import register,login # 从pac01包导入register模块
register.reg()
login.log()
# __all__变量
# 值为一个列表,存储的是当前模块中一些成员(变量、函数或者类)的名称
# __all__列表它是可以控制模块导入的行为的
# 异常
'''
try:
可能引发异常现象的代码
# 不确定是否能够正常执行的代码
except 异常类型:
出现异常现象的处理代码
# 出现异常时希望执行的代码
'''
# try:
# a
# except NameError: # 命名错误
# print('这个是错误的')
# try:
# a
# except TypeError: # 类型错误
# print('这个是错误的')
# # 注意:不是类型错误依然报错
# 当捕获多个异常类型的时候,使用元组的形式编写
# 方式一:
try:
a
except (NameError, TypeError):
print('这个是错误的')
# 方式二:
tu = (NameError, TypeError)
try:
a
except tu:
print('这个是错误的')
# 将错误信息取别名
try:
a
except NameError as error:
# as error 相当于把异常信息保存在error里面
print(error)
try:
a
except Exception as e: # 万能异常,可以捕获到任意的异常
print('报错信息:', e)
'''
try:
可能引发异常现象的代码
except:
出现异常现象的处理代码
else:
try代码快结束后运行的代码
else在if中:条件不满足时执行的代码
没有捕获到异常,那么就执行else中的代码
'''
try:
print('Ustinian')
except Exception:
print('这是错的')
else:
print('这是else')
'''
try:
6
except:(可以没有)
6
else:
try代码块结束后的代码
finally:无论是否有异常,都会执行
try代码块结束后的代码
'''
# 主动抛出异常
# 自定义异常并且抛出异常
# 1、自定义异常语法:Exception(‘异常的描述信息’)
# 2、抛出异常:raise 自定义的异常
def funm():
raise Exception('抛出一个异常')
# 注意:raise后面的代码无法执行
# funm()
# 应用场景
# 需求:定义一个登录函数,判断密码的长度,如果长度不足,则抛出异常
def login():
pwd = input('请输入你的密码:')
# 判断密码长度等于6
if len(pwd) == 6:
return '登录成功'
# 创建异常对象
error = Exception('密码长度不符合')
raise error
# print(login())
# 捕获异常
try:
print(login())
except Exception as a:
print(a)