一、异常 异常:---异于平常 异常即是事件,该事件会在程序执行过程中发生,影响程序的正常执行。 即使语句或表达式使用了正确的语法,执行时仍然可能触发错误。执行行检测到的错
一、异常
错误和异常
1、语法错误和逻辑错误
a = 90if a > 100 print('哈哈')2、逻辑错误
print(1/0)3、异常处理:出现了异常,通过做异常捕获(异常处理)之后,不会影响后续代码的执行
print(123)print(a)print('哈哈')二、异常处理
法一: try……except
print(123)try: print(a)except: # 捕获异常,如果捕获对应异常,则执行缩进内的代码 print('出现错误')print('哈哈')print('哈哈')print('哈哈')print(a)try: print(a)except NameError as e: # 捕获异常,如果捕获对应异常,则执行缩进内的代码 print(e)print('哈哈')print('哈哈')print('哈哈')法二:try……except……else
dic = {'name': 'rose'}try: print(dic['gender'])except Exception: print('出现错误')else: print('没有错误时才会执行的代码')# 法三:try……except……finally
try: print(a)except NameError as e: # 捕获异常,如果捕获对应异常,则执行缩进内的代码 print(e)# finally:# print('哈哈')print('哈哈')try: print(a)except KeyboardInterrupt: # 捕获异常,如果捕获对应异常,则执行缩进内的代码 print('出现错误')# print('哈哈')finally: print('哈哈')法四:全选
n = int(input('请输入一个整数:'))print(n)try: n = int(input('请输入一个整数:')) print(100/n)except ValueError: print('请输入正确的数据')except Exception as e: print(f'未知错误{e}')else: print('没有异常时执行的代码')finally: print('无论是否有异常,都会执行的代码')异常的传递
def funa(): return int(input('请输入一个整数:'))def funb(): print('哈哈') return funa()try: print(funb())except: print('有错误')print(123)三、主动抛出异常
1.创建Excepction('这里写异常的提示信息')的对象
2.raise 异常对象
def func(): raise Exception('这是一个异常') print(123)func()场景:登录某个网址
需求:如果密码长度小于6,则报错; 密码正常,把密码显示; 即使出现异常,不影后面的执行 ---- 异常处理
def user(): pwd = input('请输入密码:') if len(pwd) >= 6: return pwd else: ex = Exception('密码长度不够哦') raise ex异常处理
try: upwd = user() print('密码是:',upwd)except Exception as e: print(f'错误:{e}')print(123)四、模块
import time,random # 内置模块,不需要安装,自带
第三方模块 ---- 需要安装
import numpy
1.法一:win+r ---cmd pip install 模块名
建议最好cmd切换到python安装路径下的scripts这个路径下再执行安装
2.法二:pycharm ---terminal
3.法三:pycharm --- settings--- interpreter
import random # 模块的导入print(random.randint(1, 100))1、自定义模块
import helloprint(hello.a)import hehe
2、导入系统模块
import sysprint(sys.path) # 查看文件查找路径,不在该路径下,则查找不到
3、import numpy as np # 取别名,取了别名后只能够使用这个别名
import random as r # random是随机模块print(random.randint(1,10))print(r.randint(1,10))4、from 模块名 import 函数名/属性 从……导入……
from random import randintprint(randint(1,10))5、from random import * # * 表示所有
if __name__ == '__main__': # 程序的主入口; 如果当前文件作为模块导入到其他文件里,则if内的代码不执行 print(123)import helloprint(hello.__name__) # hello 模块名print(__name__) # __main__ 直接在当前文件下运行时,__name__== __main__from test import t1, t2from test import t2, t1 # 先导入先执行
6、单例模式 导入模块是一个天然的单例
import randomimport randomimport randomimport random